الفرق بين المراجعتين لصفحة: «Ruby/ARGF»

من موسوعة حسوب
لا ملخص تعديل
ط مراجعة وتدقيق.
 
(مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الصنف ARGF في روبي}}</noinclude>
<noinclude>{{DISPLAYTITLE: الصنف <code>ARGF</code> في روبي}}</noinclude>
[[تصنيف: Ruby]]
[[تصنيف: Ruby]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Class]]
[[تصنيف: Ruby ARGF]]
[[تصنيف: Ruby ARGF]]
الصنف <code>ARGF</code> هو مجرى (stream) صُمِّم ليُستخدَم في الملفات البرمجية (scritps) التي تُعالج الملفات المُمرَّرة إليها على شكل وسائط في سطر الأوامر (command-line arguments)، أو المُمرَّرة عبر مجرى الدخل القياسي (<code>STDIN</code>).
الصنف <code>ARGF</code> هو مجرى (stream) صُمِّم ليُستخدَم في الملفات البرمجية (scritps) التي تُعالج الملفات المُمرَّرة إليها على شكل وسائط في سطر الأوامر (command-line arguments)، أو المُمرَّرة عبر مجرى الدخل القياسي (STDIN).


تُخزَّن الوسائط المُمرَّرة للملف البرمجي في المصفوفة ARGV، إذ يخزَّن وسيط واحد في كل عنصر. تفترض <code>ARGF</code> أنّ الوسائط التي ليست أسماء ملفات (filenames) قد أزيلت من <code>ARGV</code>. انظر الشيفرة التالية مثلًا:<syntaxhighlight lang="ruby">
تُخزَّن الوسائط المُمرَّرة للملف البرمجي في المصفوفة ARGV، إذ يخزَّن وسيط واحد في كل عنصر. تفترض <code>ARGF</code> أنّ الوسائط التي ليست أسماء ملفات (filenames) قد أزيلت من <code>ARGV</code>. انظر الشيفرة التالية مثلًا:<syntaxhighlight lang="ruby">
سطر 11: سطر 11:
option = ARGV.shift #=> "--verbose"
option = ARGV.shift #=> "--verbose"
ARGV  #=> ["file1", "file2"]
ARGV  #=> ["file1", "file2"]
</syntaxhighlight>يمكنك الآن استخدام <code>ARGF</code> للعمل مع سلسلة من كل هذه الملفات المسماة (named files). على سبيل المثال، ستعيد العبارة <code>ARGF.[[Ruby/ARGF/read|read]]</code> محتويات الملف <code>file1</code> متبوعةً بمحتويات الملف <code>file2</code>.
</syntaxhighlight>يمكنك الآن استخدام <code>ARGF</code> للعمل مع سلسلة من كل هذه الملفات المسماة (named files). على سبيل المثال، ستعيد العبارة <code>[[Ruby/ARGF/read|ARGF.read]]</code> محتويات الملف <code>file1</code> متبوعةً بمحتويات الملف <code>file2</code>.


بعد قراءة أحد الملفات الموجودة في <code>ARGV</code>، تزيل <code>ARGF</code> هذا الملف من المصفوفة. بناءً على ذلك، ستصبح <code>ARGV</code> فارغةً بعد قراءة جميع الملفات.
بعد قراءة أحد الملفات الموجودة في <code>ARGV</code>، تزيل <code>ARGF</code> هذا الملف من المصفوفة. بناءً على ذلك، ستصبح <code>ARGV</code> فارغةً بعد قراءة جميع الملفات.
سطر 21: سطر 21:
ARGV.replace ["file2", "file3"]
ARGV.replace ["file2", "file3"]
ARGF.read      # file3 والملف file2 إعادة محتويات الملف
ARGF.read      # file3 والملف file2 إعادة محتويات الملف
</syntaxhighlight>إن كانت <code>ARGV</code> فارغةً، فستتصرّف وكأنّها تحتوي مجرى الدخل القياسي (<code>STDIN</code>)، أي البيانات المُرسلة عبر أنبوب (piped) إلى ملفك البرمجي (script). إليك مثلًا هذا المثال البسيط:<syntaxhighlight lang="ruby">
</syntaxhighlight>إن كانت <code>ARGV</code> فارغةً، فستتصرّف وكأنّها تحتوي مجرى الدخل القياسي (STDIN)، أي البيانات المُرسلة عبر أنبوب (piped) إلى ملفك البرمجي (script). إليك مثلًا هذا المثال البسيط:<syntaxhighlight lang="ruby">
$ echo "glark" | ruby -e 'p ARGF.read'
$ echo "glark" | ruby -e 'p ARGF.read'
"glark\n"
"glark\n"
</syntaxhighlight>
</syntaxhighlight>
 
==التوابع العامة (Public Instance Methods)==
== التوابع العامة (Public Instance Methods) ==
===[[Ruby/ARGF/argv|<code>argv</code>]]===
===[[Ruby/ARGF/argv | التابع <code>argv</code>]]===
يعيد التابع <code>argv</code> المصفوفة <code>ARGV</code> التي تحوي الوسائط المُمرّرة إلى ملفك البرمجي (script)، إذ يخزَّن في كلِّ عنصر من عناصرها وسيطٌ واحدٌ.
يعيد التابع <code>argv</code> المصفوفة <code>ARGV</code> التي تحوي الوسائط المُمرّرة إلى ملفك البرمجي (script)، إذ يخزَّن في كلِّ عنصر من عناصرها وسيطٌ واحدٌ.
===[[Ruby/ARGF/binmode-3F | التابع <code>binmode?‎</code>]]===
===[[Ruby/ARGF/binmode-3F|<code>binmode?‎</code>]]===
يتحقق التابع  [[Ruby/ARGF/binmode-3F|<code>binmode?‎</code>]] إذا تمت قراءة المجرى  <code>ARGF</code> في الوضع الثنائي (binary mode).
يتحقق التابع  [[Ruby/ARGF/binmode-3F|<code>binmode?‎</code>]] إذا تمت قراءة المجرى  <code>ARGF</code> في الوضع الثنائي (binary mode).
 
===[[Ruby/ARGF/binmode|<code>binmode</code>]]===
إن أردت تفعيل الوضع الثنائي للمجرى  <code>ARGF</code>، فاستخدم التابع [[Ruby/ARGF/binmode | <code>binmode</code>]].
يفعِّل التابع <code>binmode</code> الوضع الثنائي (binary mode) للمجرى <code>ARGF</code>.
===[[Ruby/ARGF/binmode | التابع <code>binmode</code>]]===
===[[Ruby/ARGF/bytes|<code>bytes</code>]]===
يفعِّل التابع <code>binmode</code> الوضع الثنائي (<code>binary</code> <code>mode</code>) للمجرى <code>ARGF</code>؛ مجرد أن يصبح المجرى في الوضع الثنائي، لا يمكن إعادته إلى الوضع غير الثنائي. هذا الخيار له التأثيرات التالية:
التابع <code>bytes</code> هو اسم بديل مهمل (deprecated) للتابع <code>[[Ruby/ARGF/each byte|each_byte]]</code>.
* تصبح عملية تحويل السطر الجديد غير ممكنة.
===[[Ruby/ARGF/chars|<code>chars</code>]]===
* تصبح عملية تحويل الترميز غير ممكنة أيضًا.
التابع <code>chars</code> هو اسم بديل مهمل (deprecated) للتابع <code>[[Ruby/ARGF/each char|each_char]]</code>.
* يُعامل المحتوى وكأنه كُتِب باستعمال الترميز <code>ASCII-8</code><code>BIT</code>.
===[[Ruby/ARGF/close-3F|<code>close?‎</code>]]===
===[[Ruby/ARGF/bytes | التابع <code>bytes</code>]]===
التابع ()<code>bytes</code> هو اسم بديل مهمل (deprecated) للتابع <code>[[Ruby/ARGF/each byte|each_byte]]</code>.
===[[Ruby/ARGF/chars | التابع <code>chars</code>]]===
التابع ()<code>chars</code> هو اسم بديل مهمل (deprecated) للتابع <code>[[Ruby/ARGF/each char|each_char]]</code>.
=== [[Ruby/ARGF/close-3F|التابع <code>close?‎</code>]] ===
يتحقق التابع  <code>close?‎</code> إن أُغلِق الملف الحالي أم لا
يتحقق التابع  <code>close?‎</code> إن أُغلِق الملف الحالي أم لا
===[[Ruby/ARGF/close | التابع <code>close</code>]]===
===[[Ruby/ARGF/close|<code>close</code>]]===
يغلق التابع <code>close</code> الملف الحالي ويتخطاه إلى الملف التالي في <code>ARGV</code>. إن لم تتبقَ ملفات أخرى لفتحها، فسيكتفي التابع بإغلاق الملف الحالي. انتبه إلى أنَّ مجرى الدخل القياسي (<code>STDIN</code>) لن يُغلَق أبدًا.
يغلق التابع <code>close</code> الملف الحالي ويتخطاه إلى الملف التالي في <code>ARGV</code>. إن لم تتبقَ ملفات أخرى لفتحها، فسيكتفي التابع بإغلاق الملف الحالي. انتبه إلى أنَّ مجرى الدخل القياسي (STDIN) لن يُغلَق أبدًا.
===[[Ruby/ARGF/codepoints | التابع <code>codepoints</code>]]===
===[[Ruby/ARGF/codepoints|<code>codepoints</code>]]===
التابع <code>codepoints</code> هو اسم بديل مهمل (deprecated) للتابع <code>[[Ruby/ARGF/codepoints|each_codepoints]]</code>.
التابع <code>codepoints</code> هو اسم بديل مهمل (deprecated) للتابع <code>[[Ruby/ARGF/codepoints|each_codepoints]]</code>.
===[[Ruby/ARGF/each | التابع <code>each</code>]]===
===[[Ruby/ARGF/each|<code>each</code>]]===
يعيد التابع [[Ruby/ARGF/each_line | <code>each_line</code>]] مُعرِّفًا ثابتًا (<code>enumerator</code>) يتكرر (iterates) عبر كل سطر (الذي يُفصَل بالفاصلة الممرَّرة) من كل ملف من الملفات الموجودة في <code>ARGV</code>. في حال تمرير كتلة برمجية للتابع [[Ruby/ARGF/each_line | <code>each_line</code>]]، فسيُمرّر كل سطر بدوره إلى تلك الكتلة، وإلا فسيعاد مُعرِّف ثابت (<code>enumerator</code>).
التابع <code>each</code> هو اسم بديل مهمل (deprecated) للتابع <nowiki/>[[Ruby/ARGF/each line|<code>each_line</code>]].
 
===[[Ruby/ARGF/each line|<code>each_line</code>]]===
يسمح لك هذا التابع بمعالجة الملفات المُمرَّرة من سطر الأوامر كما لو كانت ملفًا واحدًا مكونًا من سلسلة من هذه الملفات المسماة. بعد إعادة السطر الأخير من الملف الأول، سيُعاد السطر الأول من الملف الثاني. يمكن استخدام التابعيْن  <code>ARGF.</code>[[Ruby/ARGF/filename |<code>filename</code>]] و  <code>ARGF</code>.[[Ruby/ARGF/lineno | <code>lineno</code>]] لمعرفة اسم الملف ورقم السطر، على التوالي، للسطر الحالي.
يعيد التابع <code>each_line</code> قيمة قابلة للعد (enumerator) تتكرر (iterates) عبر كل سطر (الذي يفصل بالفاصلة الممرَّرة) من كل ملف من الملفات الموجودة في <code>ARGV</code>. في حال تمرير كتلة برمجية للتابع <code>each_line</code>، فسيُمرّر كل سطر بدوره إلى تلك الكتلة، وإلا فستعاد قيمة قابلة للعد (enumerator).
===[[Ruby/ARGF/each_line | التابع <code>each_line</code>]]===
===[[Ruby/ARGF/eof|<code>eof?‎</code>]]===
يعيد التابع <code>each_line</code> قيمة قابلة للعد (<code>enumerator</code>) تتكرر (iterates) عبر كل سطر (الذي يفصل بالفاصلة الممرَّرة) من كل ملف من الملفات الموجودة في <code>ARGV</code>. في حال تمرير كتلة برمجية للتابع <code>[[Ruby/ARGF/each line|each_line]]</code>، فسيُمرّر كل سطر بدوره إلى تلك الكتلة، وإلا فستعاد قيمة قابلة للعد (enumerator).
يتحقق التابع <code>eof?‎</code> إذا بلغ الملف الحالي نهايته في <code>ARGF</code>؛ أي أنّه لم تعد هناك أي بيانات لقراءتها.
 
===[[Ruby/ARGF/external encoding|<code>external_encoding</code>]]===
يسمح لك هذا التابع بمعالجة الملفات المُمرَّرة من سطر الأوامر كما لو كانت ملفًا واحدًا مكونًا من سلسلة من هذه الملفات المسماة. بعد إعادة السطر الأخير من الملف الأول، سيُعاد السطر الأول من الملف الثاني. يمكن استخدام التابعيْن  <code>ARGF</code>.[[Ruby/ARGF/filename | <code>filename</code>]] و  <code>ARGF</code>.[[Ruby/ARGF/lineno | <code>lineno</code>]] لمعرفة اسم الملف ورقم السطر، على التوالي، للسطر الحالي.‎
يعيد التابع <code>external_encoding</code> الترميز الخارجي (external encoding) للملفات المقروءة من <code>ARGF</code> على شكل كائن من النوع <code>Encoding</code>.
===[[Ruby/ARGF/eof | التابع <code>eof?‎</code>]]===
===[[Ruby/ARGF/file|<code>file</code>]]===
يتحقق التابع <code>eof?‎</code> إذا بلغ الملف الحالي نهايته في <code>ARGF</code>؛ أي أنّه لم تعد هناك أي بيانات لقراءتها.
 
ينبغي أن يكون المجرى مفتوحًا من قبل للقراءة، وإلا فسيُطلق الخطأ <code>IOError</code>.
===[[Ruby/ARGF/external_encoding | التابع <code>external_encoding</code>]]===
يعيد التابع <code>external_encoding</code> الترميز الخارجي (external encoding) للملفات المقروءة من <code>ARGF</code> على شكل كائن من النوع <code>Encoding</code>.
===[[Ruby/ARGF/file | التابع <code>file</code>]]===
يعيد التابع <code>file</code> الملف الحالي على شكل كائن من النوع <code>IO</code> أو <code>File</code>.
يعيد التابع <code>file</code> الملف الحالي على شكل كائن من النوع <code>IO</code> أو <code>File</code>.
===[[Ruby/ARGF/filename | التابع <code>filename</code>]]===
===[[Ruby/ARGF/filename|<code>filename</code>]]===
يعيد التابع <code>filename</code> اسم الملف الحالي.
يعيد التابع <code>filename</code> اسم الملف الحالي.
===[[Ruby/ARGF/fileno | التابع <code>fileno</code>]]===
===[[Ruby/ARGF/fileno|<code>fileno</code>]]===
يعيد التابع <code>fileno</code> عددًا صحيحًا يمثل واصف الملف العددي (numeric  file descriptor) للملف الحالي. إن لم يكن هنالك ملف، فسيُطلَق الخطأ <code>ArgumentError</code>.
يعيد التابع <code>fileno</code> عددًا صحيحًا يمثل واصف الملف العددي (numeric  file descriptor) للملف الحالي. إن لم يكن هنالك ملف، فسيُطلَق الخطأ <code>ArgumentError</code>.
===[[Ruby/ARGF/getbyte | التابع <code>getbyte</code>]]===
===[[Ruby/ARGF/getbyte|<code>getbyte</code>]]===
يجلب التابع <code>getbyte</code> بايتًا واحدًا (8 بتّات) من المجرى <code>ARGF</code>.
يجلب التابع <code>getbyte</code> بايتًا واحدًا (8 بتّات) من المجرى <code>ARGF</code>.
===[[Ruby/ARGF/getc | التابع <code>getc</code>]]===
===[[Ruby/ARGF/getc|<code>getc</code>]]===
يجلب التابع <code>getc</code> المحرف التالي من المجرى <code>ARGF</code>.
يجلب التابع <code>getc</code> المحرف التالي من المجرى <code>ARGF</code>.
===[[Ruby/ARGF/gets | التابع <code>gets</code>]]===
===[[Ruby/ARGF/gets|<code>gets</code>]]===
يجلب التابع <code>gets</code> السطر التالي من الملف الحالي في المجرى <code>ARGF</code>.
يجلب التابع <code>gets</code> السطر التالي من الملف الحالي في المجرى <code>ARGF</code>.
=== [[Ruby/ARGF/inplace mode-3D|التابع <code>inplace_mode</code> = ext]] ===
===[[Ruby/ARGF/inplace mode-3D|<code>inplace_mode = ext</code>]]===
يضبط التابع [[Ruby/ARGF/inplace_mode | <code>inplace_mode</code>]] عند استدعائه بالشكل  <code>inplace_mode =</code> <code>ext</code> امتداد اسم الملف بوضعية التعديل الموضعي (in-place editing mode) إلى السلسلة النصية <code>ext</code> المعطاة. تضاف هذه القيمة المعطاة إلى أسماء كل الملفات التي يتم تعديلها، ويُحفَظ الملف المُعدَّل تحت هذا الاسم الجديد.
يضبط التابع [[Ruby/ARGF/inplace mode| <code>inplace_mode</code>]] عند استدعائه بالشكل  <code>inplace_mode = ext</code> امتداد اسم الملف بوضعية التعديل الموضعي (in-place editing mode) إلى السلسلة النصية <code>ext</code> المعطاة. تضاف هذه القيمة المعطاة إلى أسماء كل الملفات التي يتم تعديلها، ويُحفَظ الملف المُعدَّل تحت هذا الاسم الجديد.
===[[Ruby/ARGF/inplace_mode | التابع <code>inplace_mode</code>]]===
===[[Ruby/ARGF/inplace mode|<code>inplace_mode</code>]]===
يعيد التابع <code>inplace_mode</code> امتداد الملف المضاف إلى أسماء الملفات المُعدَّلة وفق وضع التعديل الموضعي (in-place edit mode).
يعيد التابع <code>inplace_mode</code> امتداد الملف المضاف إلى أسماء الملفات المُعدَّلة وفق وضع التعديل الموضعي (in-place edit mode).
===[[Ruby/ARGF/inspect | التابع <code>inspect</code>]]===
===[[Ruby/ARGF/inspect|<code>inspect</code>]]===
يعد التابع <code>inspect</code>()‎ اسمًا بديلًا للتابع [[Ruby/ARGF/to_s | <code>to_s</code>]].
يعد التابع <code>inspect</code> اسمًا بديلًا للتابع<nowiki/>[[Ruby/ARGF/to s| <code>to_s</code>]].
===[[Ruby/ARGF/internal_encoding | التابع <code>internal_encoding</code>]]===
===[[Ruby/ARGF/internal encoding|<code>internal_encoding</code>]]===
يعيد التابع <code>internal_encoding</code> الترميز الداخلي (<code>internal</code> <code>encoding</code>) للسلاسل النصية المقروءة من المجرى <code>ARGF</code> على شكل كائن من النوع <code>Encoding</code>.
يعيد التابع <code>internal_encoding</code> الترميز الداخلي (internal encoding) للسلاسل النصية المقروءة من المجرى <code>ARGF</code> على شكل كائن من النوع <code>Encoding</code>.
=== [[Ruby/ARGF/lineno-3D|التابع <code>lineno</code> = integer]] ===
===[[Ruby/ARGF/lineno-3D|<code>lineno = integer</code>]]===
يعيِّن التابع [[Ruby/ARGF/lineno | <code>lineno</code>]] عند استدعائه بالشكل  <code>lineno =</code> <code>integer</code> رقم السطر الحالي للمجرى <code>ARGF</code> ككُل.
يعيِّن التابع<nowiki/>[[Ruby/ARGF/lineno| <code>lineno</code>]] عند استدعائه بالشكل  <code>lineno = integer</code> رقم السطر الحالي للمجرى <code>ARGF</code> ككُل.
===[[Ruby/ARGF/lineno | التابع <code>lineno</code>]]===
===[[Ruby/ARGF/lineno|<code>lineno</code>]]===
يجلب التابع <code>lineno</code> رقم السطر الحالي للمجرى <code>ARGF</code> ككُل.
يجلب التابع <code>lineno</code> رقم السطر الحالي للمجرى <code>ARGF</code> ككُل.
===[[Ruby/ARGF/lines | التابع <code>lines</code>]]===
===[[Ruby/ARGF/lines|<code>lines</code>]]===
يعدُّ التابع <code>lines</code> اسمًا بديلًا مهملًا (<code>deprecated</code>) للتابع [[Ruby/ARGF/each_line | <code>each_line</code>]].
يعدُّ التابع <code>lines</code> اسمًا بديلًا مهملًا (deprecated) للتابع<nowiki/>[[Ruby/ARGF/each line| <code>each_line</code>]].
===[[Ruby/ARGF/path | التابع <code>path</code>]]===
===[[Ruby/ARGF/path|<code>path</code>]]===
يعيد التابع <code>path</code> اسم الملف الحالي.
يعيد التابع <code>path</code> اسم الملف الحالي.
=== [[Ruby/ARGF/pos-3D|التابع <code>pos</code> = position]] ===
===[[Ruby/ARGF/pos-3D|<code>pos = position</code>]]===
ينقل التابع [[Ruby/ARGF/pos | <code>pos</code>]] عند استدعائه بالشكل <code>pos =</code> <code>position</code> المؤشِّر إلى المكان <code>position</code> (المعطى بالبايت) في المجرى <code>ARGF</code>.
ينقل التابع<nowiki/>[[Ruby/ARGF/pos| <code>pos</code>]] عند استدعائه بالشكل <code>pos = position</code> المؤشِّر إلى المكان <code>position</code> (المعطى بالبايت) في المجرى <code>ARGF</code>.
===[[Ruby/ARGF/pos | التابع <code>pos</code>]]===
===[[Ruby/ARGF/pos|<code>pos</code>]]===
يعيد التابع <code>pos</code> موضع المؤشِّر الحالي في الملف الحالي في المجرى <code>ARGF</code>.
يعيد التابع <code>pos</code> موضع المؤشِّر الحالي في الملف الحالي في المجرى <code>ARGF</code>.
===[[Ruby/ARGF/print | التابع <code>print</code>]]===
===[[Ruby/ARGF/print|<code>print</code>]]===
يطبع التابع <code>print</code> الكائن أو الكائنات المُمرَّرة إليه على المجرى <code>ios</code> (اختصارًا للعبارة <code>Input</code> <code>Output</code> <code>Stream</code>).
يطبع التابع <code>print</code> الكائن أو الكائنات المُمرَّرة إليه على المجرى <code>ios</code> (اختصارًا للعبارة Input Output Stream).
يجب أن يكون المجرى مفتوحًا وفي وضعية الكتابة. إن لم يكن الكائن المعطى سلسلةً نصيةً، فسيُحوَل إلى سلسلة نصية باستدعاء التابع [[Ruby/ARGF/to_s | <code>to_s</code>]] تلقائيًّا. عند استدعاء التابع <code>print</code> دون تمرير أي وسائط، سيُطبَع محتويات المعامل ‎$<code>_</code>.  
===[[Ruby/ARGF/printf|<code>printf</code>]]===
إذا لم يكن فاصل حقل المخرجات (,$) يساوي القيمة <code>nil</code>، فسيُدرج بين الكائنات المُمررة. وإذا لم يكن فاصل سجل المخرجات (\$) يساوي القيمة <code>nil</code>، فسيُضاف إلى المُخرج النهائي.
يطبع التابع <code>printf</code> الكائن أو الكائنات الممرَّرة إليه على المجرى <code>ios</code> (اختصارًا للعبارة Input Output Stream) بعد تنسيقها بشكل معين. للمزيد من المعلومات حول المعاملات المستعملة في عملية التنسيق (أي المستعملة مع الوسيط <code>format_string</code>).
===[[Ruby/ARGF/printf | التابع <code>printf</code>]]===
===[[Ruby/ARGF/putc|<code>putc</code>]]===
يطبع التابع <code>printf</code> الكائن أو الكائنات الممرَّرة إليه على المجرى <code>ios</code> (اختصارًا للعبارة <code>Input</code> <code>Output</code> <code>Stream</code>) بعد تنسيقها بشكل معين. للمزيد من المعلومات حول المعاملات المستعملة في عملية التنسيق (أي المستعملة مع الوسيط <code>format_string</code>)، ارجع إلى صفحة التابع <code>Kernel</code>.<code>sprintf</code>.
يكتب التابع <code>putc</code> محرفًا واحدًا على المجرى <code>ios</code> (اختصارًا للعبارة Input Output Stream).
===[[Ruby/ARGF/putc | التابع <code>putc</code>]]===
===[[Ruby/ARGF/puts|<code>puts</code>]]===
يكتب التابع <code>putc</code> محرفًا واحدًا على المجرى <code>ios</code> (اختصارًا للعبارة <code>Input</code> <code>Output</code> <code>Stream</code>).
يكتب التابع <code>puts</code> الكائن أو الكائنات المُمرَّرة إليه على المجرى <code>ios</code> (اختصارًا للعبارة Input Output Stream) ثمَّ يضيف سطرًا جديدًا في النهاية إن لم تحتوِ تلك الكائنات المعطاة على محرف سطرٍ جديدٍ.
===[[Ruby/ARGF/puts | التابع <code>puts</code>]]===
===[[Ruby/ARGF/read|<code>read</code>]]===
يكتب التابع <code>puts</code> الكائن أو الكائنات المُمرَّرة إليه على المجرى <code>ios</code> (اختصارًا للعبارة <code>Input</code> <code>Output</code> <code>Stream</code>) ثمَّ يضيف سطرًا جديدًا في النهاية إن لم تحتوِ تلك الكائنات المعطاة على محرف سطرٍ جديدٍ.
يقرأ التابع <code>read</code> عددًا محددًا من البايتات من المجرى <code>ARGF</code>.
يجب أن يكون المجرى مفتوحًا وفي وضعية الكتابة. إن مرِّرت مصفوفةٌ إلى التابع <code>puts</code> كوسيط، فسيطبع كلَّ عنصر في سطر جديد. إن لم يكن الكائن المعطى سلسلةً نصيةً أو مصفوفة، فسيُحوَل إلى سلسلة نصية باستدعاء التابع [[Ruby/ARGF/to_s | <code>to_s</code>]] تلقائيًّا. عند استدعاء  التابع <code>puts</code> دون تمرير وسائط، سيطبع سطرًا جديدًا فارغًا.
===[[Ruby/ARGF/readbyte|<code>readbyte</code>]]===
لاحظ أنّ التابع <code>puts</code> يستخدم دائمًا محارف الأسطر الجديدة ولا يتأثر بفاصل سجل المخرجات (\$).
يقرأ التابع <code>readbyte</code> البايت التالي من المجرى <code>ARGF</code> ثمَّ يعيده على شكل عدد صحيح (integer).
===[[Ruby/ARGF/read | التابع <code>read</code>]]===
===[[Ruby/ARGF/readchar|<code>readchar</code>]]===
يقرأ التابع <code>read</code> عددًا محددًا من البايتات من المجرى [[Ruby/ARGF/ARGF | <code>ARGF</code>]].
يقرأ التابع <code>readchar</code> المحرف التالي من المجرى <code>ARGF</code> ثم يعيده على شكل سلسلة نصية
===[[Ruby/ARGF/readbyte | التابع <code>readbyte</code>]]===
===[[Ruby/ARGF/readline|<code>readline</code>]]===
يقرأ التابع <code>readbyte</code> البايت التالي من المجرى [[Ruby/ARGF/ARGF | <code>ARGF</code>]] ثمَّ يعيده على شكل عدد صحيح (<code>Integer</code>).
يقرأ التابع <code>readline</code> السطر التالي من الملف الحالي في المجرى <code>ARGF</code>.
يطلق التابع الخطأ <code>EOFError</code> بعد قراءة البايت الأخير من الملف الأخير.
===[[Ruby/ARGF/readlines|<code>readlines</code>]]===
===[[Ruby/ARGF/readchar | التابع <code>readchar</code>]]===
يقرأ التابع <code>readlines</code> الملف الحالي في المجرى <code>ARGF</code> بشكل كامل.
يقرأ التابع <code>readchar</code> المحرف التالي من المجرى [[Ruby/ARGF/ARGF | <code>ARGF</code>]] ثم يعيده على شكل سلسلة نصية.
===[[Ruby/ARGF/readpartial|<code>readpartial</code>]]===
يُطلِق التابع الخطأ <code>EOFError</code>  بعد قراءة المحرف الأخير من الملف الأخير.
يقرأ التابع <code>readpartial</code> عددًا من البايتات لا يتجاوز قيمةً حديةً عليا من المجرى <code>ARGF</code>.
===[[Ruby/ARGF/readline | التابع <code>readline</code>]]===
===[[Ruby/ARGF/read nonblock|<code>read_nonblock</code>]]===
يقرأ التابع <code>readline</code> السطر التالي من الملف الحالي في المجرى [[Ruby/ARGF/ARGF | <code>ARGF</code>]].
يقرأ التابع <code>read_nonblock</code> عددًا من البايتات لا يتجاوز قيمةً حديَّةً عليا من المجرى <code>ARGF</code> في وضع عدم الحجز (non-blocking mode).
يُفترَض أنَّ الفاصل المستعمل لفصل الأسطر هو المحرف /$؛ لاستخدام فاصل سطري مغاير، يمكن تمرير المحرف المراد استعماله كفاصل إلى التابع <code>readline</code>.
===[[Ruby/ARGF/rewind|<code>rewind</code>]]===
يُطلَق الخطأ <code>EOFError</code> عند الوصول إلى نهاية الملف.
يُرجِع التابع <code>rewind</code> المؤشر إلى بداية الملف الحالي عند بداية المدخلات (input) ويعيد تعيين رقم السطر <code>[[Ruby/ARGF/lineno|ARGF.lineno]]</code> إلى القيمة <code>0</code>.
===[[Ruby/ARGF/readlines | التابع <code>readlines</code>]]===
===[[Ruby/ARGF/seek|<code>seek</code>]]===
يقرأ التابع <code>readlines</code> الملف الحالي في المجرى [[Ruby/ARGF/ARGF | <code>ARGF</code>]] بشكل كامل.
يحرِّك التابع <code>seek</code> المؤشِّر الحالي في المجرى <code>ARGF</code> إلى موقع محدد.
===[[Ruby/ARGF/readpartial | التابع <code>readpartial</code>]]===
===[[Ruby/ARGF/set encoding|<code>set_encoding</code>]]===
يقرأ التابع <code>readpartial</code> عددًا من البايتات لا يتجاوز قيمةً حديةً عليا من المجرى [[Ruby/ARGF/ARGF | <code>ARGF</code>]].
يضبط التابع <code>set_encoding</code> الترميز الداخلي والخارجي المستعمل مع السلاسل النصية المقروءة من المجرى <code>ARGF</code>.
سيطلق التابع <code>readpartial</code> الخطأ <code>EOFError</code> عند الوصول إلى نهاية المجرى [[Ruby/ARGF/ARGF | <code>ARGF</code>]]؛ لما كان المجرى [[Ruby/ARGF/ARGF | <code>ARGF</code>]] يتألف من سلسلة من عدة ملفات، فسيوجد محرف نهاية الملف (<code>EOF</code>) في نهاية كل ملف.
===[[Ruby/ARGF/skip|<code>skip</code>]]===
===[[Ruby/ARGF/read_nonblock | التابع <code>read_nonblock</code>]]===
يتخطى التابع <code>skip</code> الملف الحالي إلى الملف التالي ويجعله هو الملفَّ الحالي في المجرى <code>ARGF</code>. وفي حال لم يكن هنالك أية ملفات متبقية، فلن يكون لهذا التابع أي تأثير.
يقرأ التابع <code>read_nonblock</code> عددًا من البايتات لا يتجاوز قيمةً حديَّةً عليا من المجرى [[Ruby/ARGF/ARGF | <code>ARGF</code>]] في وضع عدم الحجز (<code>non</code>-<code>blocking</code> <code>mode</code>).
===[[Ruby/ARGF/tell|<code>tell</code>]]===
===[[Ruby/ARGF/rewind | التابع <code>rewind</code>]]===
يعيد التابع <code>tell</code> موضع المؤشِّر الحالي في الملف الحالي في <code>ARGF</code>.
يُرجِع التابع <code>rewind</code> المؤشر إلى بداية الملف الحالي عند بداية المدخلات (<code>input</code>) ويعيد تعيين رقم السطر [[Ruby/ARGF/ARGF | <code>ARGF</code>]].[[Ruby/ARGF/lineno | <code>lineno</code>]] إلى القيمة 0.
===[[Ruby/ARGF/to a|<code>to_a</code>]]===
===[[Ruby/ARGF/seek | التابع <code>seek</code>]]===
يقرأ التابع <code>to_a</code> الملف الحالي في المجرى <code>ARGF</code> بشكل كامل ثم يضع محتوياته في مصفوفة.
يحرِّك التابع <code>seek</code> المؤشِّر الحالي في المجرى [[Ruby/ARGF/ARGF | <code>ARGF</code>]] إلى موقع محدد.
===[[Ruby/ARGF/to i|<code>to_i</code>]]===
===[[Ruby/ARGF/set_encoding | التابع <code>set_encoding</code>]]===
يعيد التابع <code>to_i</code> عددًا صحيحًا يمثل واصف الملف العددي (numeric file descriptor) للملف الحالي. إن لم يكن هنالك ملف، فسيُطلَق الخطأ <code>ArgumentError</code>.
يضبط التابع <code>set_encoding</code> الترميز الداخلي والخارجي المستعمل مع السلاسل النصية المقروءة من المجرى [[Ruby/ARGF/ARGF | <code>ARGF</code>]].
===[[Ruby/ARGF/to io|<code>to_io</code>]]===
===[[Ruby/ARGF/skip | التابع <code>skip</code>]]===
يتخطى التابع <code>skip</code> الملف الحالي إلى الملف التالي ويجعله هو الملفَّ الحالي في المجرى [[Ruby/ARGF/ARGF | <code>ARGF</code>]]. وفي حال لم يكن هنالك أية ملفات متبقية، فلن يكون لهذا التابع أي تأثير.
===[[Ruby/ARGF/tell | التابع <code>tell</code>]]===
يعيد التابع <code>tell</code> موضع المؤشِّر الحالي في الملف الحالي في [[Ruby/ARGF/ARGF | <code>ARGF</code>]].
===[[Ruby/ARGF/to_a | التابع <code>to_a</code>]]===
يقرأ التابع <code>to_a</code> الملف الحالي في المجرى [[Ruby/ARGF/ARGF | <code>ARGF</code>]] بشكل كامل ثم يضع محتوياته في مصفوفة.
===[[Ruby/ARGF/to_i | التابع <code>to_i</code>]]===
يعيد التابع <code>to_i</code> عددًا صحيحًا يمثل واصف الملف العددي (<code>numeric</code> [[Ruby/ARGF/file | <code>file</code>]] <code>descriptor</code>) للملف الحالي. إن لم يكن هنالك ملف، فسيُطلَق الخطأ <code>ArgumentError</code>.
===[[Ruby/ARGF/to_io | التابع <code>to_io</code>]]===
يعيد التابع <code>to_io</code> الملف الحالي على شكل كائن من النوع <code>IO</code>.
يعيد التابع <code>to_io</code> الملف الحالي على شكل كائن من النوع <code>IO</code>.
===[[Ruby/ARGF/to_s | التابع <code>to_s</code>]]===
===[[Ruby/ARGF/to s|<code>to_s</code>]]===
يعيد التابع <code>to_s</code>‎ القيمة "<code>"ARGF"</code>".
يعيد التابع <code>to_s</code>‎ القيمة <code>"ARGF"</code>.
===[[Ruby/ARGF/to_write_io | التابع <code>to_write_io</code>]]===
===[[Ruby/ARGF/to write io|<code>to_write_io</code>]]===
يعيد التابع <code>to_write_io</code> نسخةً من الصنف <code>IO</code> مرتبطةً بالمجرى [[Ruby/ARGF/ARGF | <code>ARGF</code>]] للكتابة عليها في حال كان الوضع <code>inplace</code> مفعَّلًا.
يعيد التابع <code>to_write_io</code> نسخةً من الصنف <code>IO</code> مرتبطةً بالمجرى <code>ARGF</code> للكتابة عليها في حال كان الوضع <code>inplace</code> مفعَّلًا.
===[[Ruby/ARGF/write | التابع <code>write</code>]]===
===[[Ruby/ARGF/write|<code>write</code>]]===
يكتب التابع <code>write</code> السلسلة النصية الممرَّرة إليها على المجرى [[Ruby/ARGF/ARGF | <code>ARGF</code>]][<code>a</code>] في حال كان الوضع <code>inplace</code>  مفعَّلًا.
يكتب التابع <code>write</code> السلسلة النصية الممرَّرة إليها على المجرى <code>ARGF</code>في حال كان الوضع <code>inplace</code>  مفعَّلًا.
 
 
==مصادر==
==مصادر==
* [http://ruby-doc.org/core-2.5.1/ARGF.html صفحة الصنف ARGF في توثيق روبي الرسمي.]
*[http://ruby-doc.org/core-2.5.1/ARGF.html صفحة الصنف ARGF في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 11:35، 3 أكتوبر 2018

الصنف ARGF هو مجرى (stream) صُمِّم ليُستخدَم في الملفات البرمجية (scritps) التي تُعالج الملفات المُمرَّرة إليها على شكل وسائط في سطر الأوامر (command-line arguments)، أو المُمرَّرة عبر مجرى الدخل القياسي (STDIN).

تُخزَّن الوسائط المُمرَّرة للملف البرمجي في المصفوفة ARGV، إذ يخزَّن وسيط واحد في كل عنصر. تفترض ARGF أنّ الوسائط التي ليست أسماء ملفات (filenames) قد أزيلت من ARGV. انظر الشيفرة التالية مثلًا:

$ ruby argf.rb --verbose file1 file2

ARGV  #=> ["--verbose", "file1", "file2"]
option = ARGV.shift #=> "--verbose"
ARGV  #=> ["file1", "file2"]

يمكنك الآن استخدام ARGF للعمل مع سلسلة من كل هذه الملفات المسماة (named files). على سبيل المثال، ستعيد العبارة ARGF.read محتويات الملف file1 متبوعةً بمحتويات الملف file2.

بعد قراءة أحد الملفات الموجودة في ARGV، تزيل ARGF هذا الملف من المصفوفة. بناءً على ذلك، ستصبح ARGV فارغةً بعد قراءة جميع الملفات.

يمكنك تعديل ARGV بنفسك للتحكم في عملها. إن أزلت مثلًا ملفًا من ARGV، فستتجاهله ARGF؛ وإذا أضفت ملفات إلى ARGV، فستُعامل كما لو أنها مُرِّرت في سطر الأوامر. تفحَّص مثلًا الشيفرة التالية:

ARGV.replace ["file1"]
ARGF.readlines # في مصفوفة file1 إعادة محتويات الملف
ARGV           #=> []
ARGV.replace ["file2", "file3"]
ARGF.read      # file3 والملف file2 إعادة محتويات الملف

إن كانت ARGV فارغةً، فستتصرّف وكأنّها تحتوي مجرى الدخل القياسي (STDIN)، أي البيانات المُرسلة عبر أنبوب (piped) إلى ملفك البرمجي (script). إليك مثلًا هذا المثال البسيط:

$ echo "glark" | ruby -e 'p ARGF.read'
"glark\n"

التوابع العامة (Public Instance Methods)

argv

يعيد التابع argv المصفوفة ARGV التي تحوي الوسائط المُمرّرة إلى ملفك البرمجي (script)، إذ يخزَّن في كلِّ عنصر من عناصرها وسيطٌ واحدٌ.

binmode?‎

يتحقق التابع binmode?‎ إذا تمت قراءة المجرى ARGF في الوضع الثنائي (binary mode).

binmode

يفعِّل التابع binmode الوضع الثنائي (binary mode) للمجرى ARGF.

bytes

التابع bytes هو اسم بديل مهمل (deprecated) للتابع each_byte.

chars

التابع chars هو اسم بديل مهمل (deprecated) للتابع each_char.

close?‎

يتحقق التابع close?‎ إن أُغلِق الملف الحالي أم لا

close

يغلق التابع close الملف الحالي ويتخطاه إلى الملف التالي في ARGV. إن لم تتبقَ ملفات أخرى لفتحها، فسيكتفي التابع بإغلاق الملف الحالي. انتبه إلى أنَّ مجرى الدخل القياسي (STDIN) لن يُغلَق أبدًا.

codepoints

التابع codepoints هو اسم بديل مهمل (deprecated) للتابع each_codepoints.

each

التابع each هو اسم بديل مهمل (deprecated) للتابع each_line.

each_line

يعيد التابع each_line قيمة قابلة للعد (enumerator) تتكرر (iterates) عبر كل سطر (الذي يفصل بالفاصلة الممرَّرة) من كل ملف من الملفات الموجودة في ARGV. في حال تمرير كتلة برمجية للتابع each_line، فسيُمرّر كل سطر بدوره إلى تلك الكتلة، وإلا فستعاد قيمة قابلة للعد (enumerator).

eof?‎

يتحقق التابع eof?‎ إذا بلغ الملف الحالي نهايته في ARGF؛ أي أنّه لم تعد هناك أي بيانات لقراءتها.

external_encoding

يعيد التابع external_encoding الترميز الخارجي (external encoding) للملفات المقروءة من ARGF على شكل كائن من النوع Encoding.

file

يعيد التابع file الملف الحالي على شكل كائن من النوع IO أو File.

filename

يعيد التابع filename اسم الملف الحالي.

fileno

يعيد التابع fileno عددًا صحيحًا يمثل واصف الملف العددي (numeric file descriptor) للملف الحالي. إن لم يكن هنالك ملف، فسيُطلَق الخطأ ArgumentError.

getbyte

يجلب التابع getbyte بايتًا واحدًا (8 بتّات) من المجرى ARGF.

getc

يجلب التابع getc المحرف التالي من المجرى ARGF.

gets

يجلب التابع gets السطر التالي من الملف الحالي في المجرى ARGF.

inplace_mode = ext

يضبط التابع inplace_mode عند استدعائه بالشكل inplace_mode = ext امتداد اسم الملف بوضعية التعديل الموضعي (in-place editing mode) إلى السلسلة النصية ext المعطاة. تضاف هذه القيمة المعطاة إلى أسماء كل الملفات التي يتم تعديلها، ويُحفَظ الملف المُعدَّل تحت هذا الاسم الجديد.

inplace_mode

يعيد التابع inplace_mode امتداد الملف المضاف إلى أسماء الملفات المُعدَّلة وفق وضع التعديل الموضعي (in-place edit mode).

inspect

يعد التابع inspect اسمًا بديلًا للتابع to_s.

internal_encoding

يعيد التابع internal_encoding الترميز الداخلي (internal encoding) للسلاسل النصية المقروءة من المجرى ARGF على شكل كائن من النوع Encoding.

lineno = integer

يعيِّن التابع lineno عند استدعائه بالشكل lineno = integer رقم السطر الحالي للمجرى ARGF ككُل.

lineno

يجلب التابع lineno رقم السطر الحالي للمجرى ARGF ككُل.

lines

يعدُّ التابع lines اسمًا بديلًا مهملًا (deprecated) للتابع each_line.

path

يعيد التابع path اسم الملف الحالي.

pos = position

ينقل التابع pos عند استدعائه بالشكل pos = position المؤشِّر إلى المكان position (المعطى بالبايت) في المجرى ARGF.

pos

يعيد التابع pos موضع المؤشِّر الحالي في الملف الحالي في المجرى ARGF.

print

يطبع التابع print الكائن أو الكائنات المُمرَّرة إليه على المجرى ios (اختصارًا للعبارة Input Output Stream).

printf

يطبع التابع printf الكائن أو الكائنات الممرَّرة إليه على المجرى ios (اختصارًا للعبارة Input Output Stream) بعد تنسيقها بشكل معين. للمزيد من المعلومات حول المعاملات المستعملة في عملية التنسيق (أي المستعملة مع الوسيط format_string).

putc

يكتب التابع putc محرفًا واحدًا على المجرى ios (اختصارًا للعبارة Input Output Stream).

puts

يكتب التابع puts الكائن أو الكائنات المُمرَّرة إليه على المجرى ios (اختصارًا للعبارة Input Output Stream) ثمَّ يضيف سطرًا جديدًا في النهاية إن لم تحتوِ تلك الكائنات المعطاة على محرف سطرٍ جديدٍ.

read

يقرأ التابع read عددًا محددًا من البايتات من المجرى ARGF.

readbyte

يقرأ التابع readbyte البايت التالي من المجرى ARGF ثمَّ يعيده على شكل عدد صحيح (integer).

readchar

يقرأ التابع readchar المحرف التالي من المجرى ARGF ثم يعيده على شكل سلسلة نصية

readline

يقرأ التابع readline السطر التالي من الملف الحالي في المجرى ARGF.

readlines

يقرأ التابع readlines الملف الحالي في المجرى ARGF بشكل كامل.

readpartial

يقرأ التابع readpartial عددًا من البايتات لا يتجاوز قيمةً حديةً عليا من المجرى ARGF.

read_nonblock

يقرأ التابع read_nonblock عددًا من البايتات لا يتجاوز قيمةً حديَّةً عليا من المجرى ARGF في وضع عدم الحجز (non-blocking mode).

rewind

يُرجِع التابع rewind المؤشر إلى بداية الملف الحالي عند بداية المدخلات (input) ويعيد تعيين رقم السطر ARGF.lineno إلى القيمة 0.

seek

يحرِّك التابع seek المؤشِّر الحالي في المجرى ARGF إلى موقع محدد.

set_encoding

يضبط التابع set_encoding الترميز الداخلي والخارجي المستعمل مع السلاسل النصية المقروءة من المجرى ARGF.

skip

يتخطى التابع skip الملف الحالي إلى الملف التالي ويجعله هو الملفَّ الحالي في المجرى ARGF. وفي حال لم يكن هنالك أية ملفات متبقية، فلن يكون لهذا التابع أي تأثير.

tell

يعيد التابع tell موضع المؤشِّر الحالي في الملف الحالي في ARGF.

to_a

يقرأ التابع to_a الملف الحالي في المجرى ARGF بشكل كامل ثم يضع محتوياته في مصفوفة.

to_i

يعيد التابع to_i عددًا صحيحًا يمثل واصف الملف العددي (numeric file descriptor) للملف الحالي. إن لم يكن هنالك ملف، فسيُطلَق الخطأ ArgumentError.

to_io

يعيد التابع to_io الملف الحالي على شكل كائن من النوع IO.

to_s

يعيد التابع to_s‎ القيمة "ARGF".

to_write_io

يعيد التابع to_write_io نسخةً من الصنف IO مرتبطةً بالمجرى ARGF للكتابة عليها في حال كان الوضع inplace مفعَّلًا.

write

يكتب التابع write السلسلة النصية الممرَّرة إليها على المجرى ARGFفي حال كان الوضع inplace مفعَّلًا.

مصادر