الصنف ARGF في روبي
الصنف 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).
إن أردت تفعيل الوضع الثنائي للمجرى ARGF، فاستخدم التابع binmode.
التابع binmode
يفعِّل التابع binmode الوضع الثنائي (binary mode) للمجرى ARGF؛ مجرد أن يصبح المجرى في الوضع الثنائي، لا يمكن إعادته إلى الوضع غير الثنائي. هذا الخيار له التأثيرات التالية:
- تصبح عملية تحويل السطر الجديد غير ممكنة.
- تصبح عملية تحويل الترميز غير ممكنة أيضًا.
- يُعامل المحتوى وكأنه كُتِب باستعمال الترميز
ASCII-8BIT.
التابع bytes
التابع ()bytes هو اسم بديل مهمل (deprecated) للتابع each_byte.
التابع chars
التابع ()chars هو اسم بديل مهمل (deprecated) للتابع each_char.
التابع close?
يتحقق التابع close? إن أُغلِق الملف الحالي أم لا
التابع close
يغلق التابع close الملف الحالي ويتخطاه إلى الملف التالي في ARGV. إن لم تتبقَ ملفات أخرى لفتحها، فسيكتفي التابع بإغلاق الملف الحالي. انتبه إلى أنَّ مجرى الدخل القياسي (STDIN) لن يُغلَق أبدًا.
التابع codepoints
التابع codepoints هو اسم بديل مهمل (deprecated) للتابع each_codepoints.
التابع each
يعيد التابع each_line مُعرِّفًا ثابتًا (enumerator) يتكرر (iterates) عبر كل سطر (الذي يُفصَل بالفاصلة الممرَّرة) من كل ملف من الملفات الموجودة في ARGV. في حال تمرير كتلة برمجية للتابع each_line، فسيُمرّر كل سطر بدوره إلى تلك الكتلة، وإلا فسيعاد مُعرِّف ثابت (enumerator).
يسمح لك هذا التابع بمعالجة الملفات المُمرَّرة من سطر الأوامر كما لو كانت ملفًا واحدًا مكونًا من سلسلة من هذه الملفات المسماة. بعد إعادة السطر الأخير من الملف الأول، سيُعاد السطر الأول من الملف الثاني. يمكن استخدام التابعيْن ARGF.filename و ARGF. lineno لمعرفة اسم الملف ورقم السطر، على التوالي، للسطر الحالي.
التابع each_line
يعيد التابع each_line قيمة قابلة للعد (enumerator) تتكرر (iterates) عبر كل سطر (الذي يفصل بالفاصلة الممرَّرة) من كل ملف من الملفات الموجودة في ARGV. في حال تمرير كتلة برمجية للتابع each_line، فسيُمرّر كل سطر بدوره إلى تلك الكتلة، وإلا فستعاد قيمة قابلة للعد (enumerator).
يسمح لك هذا التابع بمعالجة الملفات المُمرَّرة من سطر الأوامر كما لو كانت ملفًا واحدًا مكونًا من سلسلة من هذه الملفات المسماة. بعد إعادة السطر الأخير من الملف الأول، سيُعاد السطر الأول من الملف الثاني. يمكن استخدام التابعيْن ARGF. filename و ARGF. lineno لمعرفة اسم الملف ورقم السطر، على التوالي، للسطر الحالي.
التابع eof?
يتحقق التابع eof? إذا بلغ الملف الحالي نهايته في ARGF؛ أي أنّه لم تعد هناك أي بيانات لقراءتها.
ينبغي أن يكون المجرى مفتوحًا من قبل للقراءة، وإلا فسيُطلق الخطأ IOError.
التابع 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 مفعَّلًا.