الفرق بين المراجعتين لصفحة: «Ruby/ARGF»
لا ملخص تعديل |
جميل-بيلوني (نقاش | مساهمات) ط مراجعة وتدقيق. |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: الصنف ARGF في روبي}}</noinclude> | <noinclude>{{DISPLAYTITLE: الصنف <code>ARGF</code> في روبي}}</noinclude> | ||
[[تصنيف: Ruby]] | [[تصنيف: Ruby]] | ||
[[تصنيف: Ruby | [[تصنيف: Ruby Class]] | ||
[[تصنيف: Ruby ARGF]] | [[تصنيف: Ruby ARGF]] | ||
الصنف <code>ARGF</code> هو مجرى (stream) صُمِّم ليُستخدَم في الملفات البرمجية (scritps) التي تُعالج الملفات المُمرَّرة إليها على شكل وسائط في سطر الأوامر (command-line arguments)، أو المُمرَّرة عبر مجرى الدخل القياسي ( | الصنف <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> | </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> فارغةً، فستتصرّف وكأنّها تحتوي مجرى الدخل القياسي ( | </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> التي تحوي الوسائط المُمرّرة إلى ملفك البرمجي (script)، إذ يخزَّن في كلِّ عنصر من عناصرها وسيطٌ واحدٌ. | يعيد التابع <code>argv</code> المصفوفة <code>ARGV</code> التي تحوي الوسائط المُمرّرة إلى ملفك البرمجي (script)، إذ يخزَّن في كلِّ عنصر من عناصرها وسيطٌ واحدٌ. | ||
===[[Ruby/ARGF/binmode-3F | | ===[[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>binmode</code> الوضع الثنائي (binary mode) للمجرى <code>ARGF</code>. | |||
===[[Ruby/ARGF/binmode | | ===[[Ruby/ARGF/bytes|<code>bytes</code>]]=== | ||
يفعِّل التابع <code>binmode</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>]]=== | |||
===[[Ruby/ARGF/bytes | | |||
التابع | |||
===[[Ruby/ARGF/chars | | |||
التابع | |||
=== [[Ruby/ARGF/close-3F| | |||
يتحقق التابع <code>close?</code> إن أُغلِق الملف الحالي أم لا | يتحقق التابع <code>close?</code> إن أُغلِق الملف الحالي أم لا | ||
===[[Ruby/ARGF/close | | ===[[Ruby/ARGF/close|<code>close</code>]]=== | ||
يغلق التابع <code>close</code> الملف الحالي ويتخطاه إلى الملف التالي في <code>ARGV</code>. إن لم تتبقَ ملفات أخرى لفتحها، فسيكتفي التابع بإغلاق الملف الحالي. انتبه إلى أنَّ مجرى الدخل القياسي ( | يغلق التابع <code>close</code> الملف الحالي ويتخطاه إلى الملف التالي في <code>ARGV</code>. إن لم تتبقَ ملفات أخرى لفتحها، فسيكتفي التابع بإغلاق الملف الحالي. انتبه إلى أنَّ مجرى الدخل القياسي (STDIN) لن يُغلَق أبدًا. | ||
===[[Ruby/ARGF/codepoints | | ===[[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 | | ===[[Ruby/ARGF/each|<code>each</code>]]=== | ||
التابع <code>each</code> هو اسم بديل مهمل (deprecated) للتابع <nowiki/>[[Ruby/ARGF/each line|<code>each_line</code>]]. | |||
===[[Ruby/ARGF/each line|<code>each_line</code>]]=== | |||
يعيد التابع <code>each_line</code> قيمة قابلة للعد (enumerator) تتكرر (iterates) عبر كل سطر (الذي يفصل بالفاصلة الممرَّرة) من كل ملف من الملفات الموجودة في <code>ARGV</code>. في حال تمرير كتلة برمجية للتابع <code>each_line</code>، فسيُمرّر كل سطر بدوره إلى تلك الكتلة، وإلا فستعاد قيمة قابلة للعد (enumerator). | |||
===[[Ruby/ARGF/ | ===[[Ruby/ARGF/eof|<code>eof?</code>]]=== | ||
يعيد التابع <code>each_line</code> قيمة قابلة للعد ( | يتحقق التابع <code>eof?</code> إذا بلغ الملف الحالي نهايته في <code>ARGF</code>؛ أي أنّه لم تعد هناك أي بيانات لقراءتها. | ||
===[[Ruby/ARGF/external encoding|<code>external_encoding</code>]]=== | |||
يعيد التابع <code>external_encoding</code> الترميز الخارجي (external encoding) للملفات المقروءة من <code>ARGF</code> على شكل كائن من النوع <code>Encoding</code>. | |||
===[[Ruby/ARGF/eof | | ===[[Ruby/ARGF/file|<code>file</code>]]=== | ||
يتحقق التابع <code>eof?</code> إذا بلغ الملف الحالي نهايته في | |||
===[[Ruby/ARGF/ | |||
يعيد التابع <code>external_encoding</code> الترميز الخارجي (external encoding) للملفات المقروءة من | |||
===[[Ruby/ARGF/file | | |||
يعيد التابع <code>file</code> الملف الحالي على شكل كائن من النوع <code>IO</code> أو <code>File</code>. | يعيد التابع <code>file</code> الملف الحالي على شكل كائن من النوع <code>IO</code> أو <code>File</code>. | ||
===[[Ruby/ARGF/filename | | ===[[Ruby/ARGF/filename|<code>filename</code>]]=== | ||
يعيد التابع <code>filename</code> اسم الملف الحالي. | يعيد التابع <code>filename</code> اسم الملف الحالي. | ||
===[[Ruby/ARGF/fileno | | ===[[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 | | ===[[Ruby/ARGF/getbyte|<code>getbyte</code>]]=== | ||
يجلب التابع <code>getbyte</code> بايتًا واحدًا (8 بتّات) من المجرى | يجلب التابع <code>getbyte</code> بايتًا واحدًا (8 بتّات) من المجرى <code>ARGF</code>. | ||
===[[Ruby/ARGF/getc | | ===[[Ruby/ARGF/getc|<code>getc</code>]]=== | ||
يجلب التابع <code>getc</code> المحرف التالي من المجرى | يجلب التابع <code>getc</code> المحرف التالي من المجرى <code>ARGF</code>. | ||
===[[Ruby/ARGF/gets | | ===[[Ruby/ARGF/gets|<code>gets</code>]]=== | ||
يجلب التابع <code>gets</code> السطر التالي من الملف الحالي في المجرى | يجلب التابع <code>gets</code> السطر التالي من الملف الحالي في المجرى <code>ARGF</code>. | ||
=== [[Ruby/ARGF/inplace mode-3D| | ===[[Ruby/ARGF/inplace mode-3D|<code>inplace_mode = ext</code>]]=== | ||
يضبط التابع [[Ruby/ARGF/ | يضبط التابع [[Ruby/ARGF/inplace mode| <code>inplace_mode</code>]] عند استدعائه بالشكل <code>inplace_mode = ext</code> امتداد اسم الملف بوضعية التعديل الموضعي (in-place editing mode) إلى السلسلة النصية <code>ext</code> المعطاة. تضاف هذه القيمة المعطاة إلى أسماء كل الملفات التي يتم تعديلها، ويُحفَظ الملف المُعدَّل تحت هذا الاسم الجديد. | ||
===[[Ruby/ARGF/ | ===[[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 | | ===[[Ruby/ARGF/inspect|<code>inspect</code>]]=== | ||
يعد التابع <code>inspect</code> | يعد التابع <code>inspect</code> اسمًا بديلًا للتابع<nowiki/>[[Ruby/ARGF/to s| <code>to_s</code>]]. | ||
===[[Ruby/ARGF/ | ===[[Ruby/ARGF/internal encoding|<code>internal_encoding</code>]]=== | ||
يعيد التابع <code>internal_encoding</code> الترميز الداخلي ( | يعيد التابع <code>internal_encoding</code> الترميز الداخلي (internal encoding) للسلاسل النصية المقروءة من المجرى <code>ARGF</code> على شكل كائن من النوع <code>Encoding</code>. | ||
=== [[Ruby/ARGF/lineno-3D| | ===[[Ruby/ARGF/lineno-3D|<code>lineno = integer</code>]]=== | ||
يعيِّن التابع [[Ruby/ARGF/lineno | <code>lineno</code>]] عند استدعائه بالشكل <code>lineno = | يعيِّن التابع<nowiki/>[[Ruby/ARGF/lineno| <code>lineno</code>]] عند استدعائه بالشكل <code>lineno = integer</code> رقم السطر الحالي للمجرى <code>ARGF</code> ككُل. | ||
===[[Ruby/ARGF/lineno | | ===[[Ruby/ARGF/lineno|<code>lineno</code>]]=== | ||
يجلب التابع <code>lineno</code> رقم السطر الحالي للمجرى | يجلب التابع <code>lineno</code> رقم السطر الحالي للمجرى <code>ARGF</code> ككُل. | ||
===[[Ruby/ARGF/lines | | ===[[Ruby/ARGF/lines|<code>lines</code>]]=== | ||
يعدُّ التابع <code>lines</code> اسمًا بديلًا مهملًا ( | يعدُّ التابع <code>lines</code> اسمًا بديلًا مهملًا (deprecated) للتابع<nowiki/>[[Ruby/ARGF/each line| <code>each_line</code>]]. | ||
===[[Ruby/ARGF/path | | ===[[Ruby/ARGF/path|<code>path</code>]]=== | ||
يعيد التابع <code>path</code> اسم الملف الحالي. | يعيد التابع <code>path</code> اسم الملف الحالي. | ||
=== [[Ruby/ARGF/pos-3D| | ===[[Ruby/ARGF/pos-3D|<code>pos = position</code>]]=== | ||
ينقل التابع [[Ruby/ARGF/pos | <code>pos</code>]] عند استدعائه بالشكل | ينقل التابع<nowiki/>[[Ruby/ARGF/pos| <code>pos</code>]] عند استدعائه بالشكل <code>pos = position</code> المؤشِّر إلى المكان <code>position</code> (المعطى بالبايت) في المجرى <code>ARGF</code>. | ||
===[[Ruby/ARGF/pos | | ===[[Ruby/ARGF/pos|<code>pos</code>]]=== | ||
يعيد التابع <code>pos</code> موضع المؤشِّر الحالي في الملف الحالي في المجرى | يعيد التابع <code>pos</code> موضع المؤشِّر الحالي في الملف الحالي في المجرى <code>ARGF</code>. | ||
===[[Ruby/ARGF/print | | ===[[Ruby/ARGF/print|<code>print</code>]]=== | ||
يطبع التابع <code>print</code> الكائن أو الكائنات المُمرَّرة إليه على المجرى <code>ios</code> (اختصارًا للعبارة Input Output Stream). | يطبع التابع <code>print</code> الكائن أو الكائنات المُمرَّرة إليه على المجرى <code>ios</code> (اختصارًا للعبارة Input Output Stream). | ||
===[[Ruby/ARGF/printf | | ===[[Ruby/ARGF/printf|<code>printf</code>]]=== | ||
يطبع التابع <code>printf</code> الكائن أو الكائنات الممرَّرة إليه على المجرى <code>ios</code> (اختصارًا للعبارة Input Output Stream) بعد تنسيقها بشكل معين. للمزيد من المعلومات حول المعاملات المستعملة في عملية التنسيق (أي المستعملة مع الوسيط <code>format_string</code>). | يطبع التابع <code>printf</code> الكائن أو الكائنات الممرَّرة إليه على المجرى <code>ios</code> (اختصارًا للعبارة Input Output Stream) بعد تنسيقها بشكل معين. للمزيد من المعلومات حول المعاملات المستعملة في عملية التنسيق (أي المستعملة مع الوسيط <code>format_string</code>). | ||
===[[Ruby/ARGF/putc | | ===[[Ruby/ARGF/putc|<code>putc</code>]]=== | ||
يكتب التابع <code>putc</code> محرفًا واحدًا على المجرى <code>ios</code> (اختصارًا للعبارة Input Output Stream). | يكتب التابع <code>putc</code> محرفًا واحدًا على المجرى <code>ios</code> (اختصارًا للعبارة Input Output Stream). | ||
===[[Ruby/ARGF/puts | | ===[[Ruby/ARGF/puts|<code>puts</code>]]=== | ||
يكتب التابع <code>puts</code> الكائن أو الكائنات المُمرَّرة إليه على المجرى <code>ios</code> (اختصارًا للعبارة Input Output Stream) ثمَّ يضيف سطرًا جديدًا في النهاية إن لم تحتوِ تلك الكائنات المعطاة على محرف سطرٍ جديدٍ. | يكتب التابع <code>puts</code> الكائن أو الكائنات المُمرَّرة إليه على المجرى <code>ios</code> (اختصارًا للعبارة Input Output Stream) ثمَّ يضيف سطرًا جديدًا في النهاية إن لم تحتوِ تلك الكائنات المعطاة على محرف سطرٍ جديدٍ. | ||
===[[Ruby/ARGF/read | | ===[[Ruby/ARGF/read|<code>read</code>]]=== | ||
يقرأ التابع <code>read</code> عددًا محددًا من البايتات من المجرى | يقرأ التابع <code>read</code> عددًا محددًا من البايتات من المجرى <code>ARGF</code>. | ||
===[[Ruby/ARGF/readbyte | | ===[[Ruby/ARGF/readbyte|<code>readbyte</code>]]=== | ||
يقرأ التابع <code>readbyte</code> البايت التالي من المجرى | يقرأ التابع <code>readbyte</code> البايت التالي من المجرى <code>ARGF</code> ثمَّ يعيده على شكل عدد صحيح (integer). | ||
===[[Ruby/ARGF/readchar | | ===[[Ruby/ARGF/readchar|<code>readchar</code>]]=== | ||
يقرأ التابع <code>readchar</code> المحرف التالي من المجرى | يقرأ التابع <code>readchar</code> المحرف التالي من المجرى <code>ARGF</code> ثم يعيده على شكل سلسلة نصية | ||
===[[Ruby/ARGF/readline | | ===[[Ruby/ARGF/readline|<code>readline</code>]]=== | ||
يقرأ التابع <code>readline</code> السطر التالي من الملف الحالي في المجرى | يقرأ التابع <code>readline</code> السطر التالي من الملف الحالي في المجرى <code>ARGF</code>. | ||
===[[Ruby/ARGF/readlines | | ===[[Ruby/ARGF/readlines|<code>readlines</code>]]=== | ||
يقرأ التابع <code>readlines</code> الملف الحالي في المجرى | يقرأ التابع <code>readlines</code> الملف الحالي في المجرى <code>ARGF</code> بشكل كامل. | ||
===[[Ruby/ARGF/readpartial | | ===[[Ruby/ARGF/readpartial|<code>readpartial</code>]]=== | ||
يقرأ التابع <code>readpartial</code> عددًا من البايتات لا يتجاوز قيمةً حديةً عليا من المجرى | يقرأ التابع <code>readpartial</code> عددًا من البايتات لا يتجاوز قيمةً حديةً عليا من المجرى <code>ARGF</code>. | ||
===[[Ruby/ARGF/ | ===[[Ruby/ARGF/read nonblock|<code>read_nonblock</code>]]=== | ||
يقرأ التابع <code>read_nonblock</code> عددًا من البايتات لا يتجاوز قيمةً حديَّةً عليا من المجرى | يقرأ التابع <code>read_nonblock</code> عددًا من البايتات لا يتجاوز قيمةً حديَّةً عليا من المجرى <code>ARGF</code> في وضع عدم الحجز (non-blocking mode). | ||
===[[Ruby/ARGF/rewind | | ===[[Ruby/ARGF/rewind|<code>rewind</code>]]=== | ||
يُرجِع التابع <code>rewind</code> المؤشر إلى بداية الملف الحالي عند بداية المدخلات ( | يُرجِع التابع <code>rewind</code> المؤشر إلى بداية الملف الحالي عند بداية المدخلات (input) ويعيد تعيين رقم السطر <code>[[Ruby/ARGF/lineno|ARGF.lineno]]</code> إلى القيمة <code>0</code>. | ||
===[[Ruby/ARGF/seek | | ===[[Ruby/ARGF/seek|<code>seek</code>]]=== | ||
يحرِّك التابع <code>seek</code> المؤشِّر الحالي في المجرى | يحرِّك التابع <code>seek</code> المؤشِّر الحالي في المجرى <code>ARGF</code> إلى موقع محدد. | ||
===[[Ruby/ARGF/ | ===[[Ruby/ARGF/set encoding|<code>set_encoding</code>]]=== | ||
يضبط التابع <code>set_encoding</code> الترميز الداخلي والخارجي المستعمل مع السلاسل النصية المقروءة من المجرى | يضبط التابع <code>set_encoding</code> الترميز الداخلي والخارجي المستعمل مع السلاسل النصية المقروءة من المجرى <code>ARGF</code>. | ||
===[[Ruby/ARGF/skip | | ===[[Ruby/ARGF/skip|<code>skip</code>]]=== | ||
يتخطى التابع <code>skip</code> الملف الحالي إلى الملف التالي ويجعله هو الملفَّ الحالي في المجرى | يتخطى التابع <code>skip</code> الملف الحالي إلى الملف التالي ويجعله هو الملفَّ الحالي في المجرى <code>ARGF</code>. وفي حال لم يكن هنالك أية ملفات متبقية، فلن يكون لهذا التابع أي تأثير. | ||
===[[Ruby/ARGF/tell | | ===[[Ruby/ARGF/tell|<code>tell</code>]]=== | ||
يعيد التابع <code>tell</code> موضع المؤشِّر الحالي في الملف الحالي في | يعيد التابع <code>tell</code> موضع المؤشِّر الحالي في الملف الحالي في <code>ARGF</code>. | ||
===[[Ruby/ARGF/ | ===[[Ruby/ARGF/to a|<code>to_a</code>]]=== | ||
يقرأ التابع <code>to_a</code> الملف الحالي في المجرى | يقرأ التابع <code>to_a</code> الملف الحالي في المجرى <code>ARGF</code> بشكل كامل ثم يضع محتوياته في مصفوفة. | ||
===[[Ruby/ARGF/ | ===[[Ruby/ARGF/to i|<code>to_i</code>]]=== | ||
يعيد التابع <code>to_i</code> عددًا صحيحًا يمثل واصف الملف العددي (numeric file descriptor) للملف الحالي. إن لم يكن هنالك ملف، فسيُطلَق الخطأ <code>ArgumentError</code>. | يعيد التابع <code>to_i</code> عددًا صحيحًا يمثل واصف الملف العددي (numeric file descriptor) للملف الحالي. إن لم يكن هنالك ملف، فسيُطلَق الخطأ <code>ArgumentError</code>. | ||
===[[Ruby/ARGF/ | ===[[Ruby/ARGF/to io|<code>to_io</code>]]=== | ||
يعيد التابع <code>to_io</code> الملف الحالي على شكل كائن من النوع <code>IO</code>. | يعيد التابع <code>to_io</code> الملف الحالي على شكل كائن من النوع <code>IO</code>. | ||
===[[Ruby/ARGF/ | ===[[Ruby/ARGF/to s|<code>to_s</code>]]=== | ||
يعيد التابع <code>to_s</code> القيمة <code>"ARGF"</code>. | يعيد التابع <code>to_s</code> القيمة <code>"ARGF"</code>. | ||
===[[Ruby/ARGF/ | ===[[Ruby/ARGF/to write io|<code>to_write_io</code>]]=== | ||
يعيد التابع <code>to_write_io</code> نسخةً من الصنف <code>IO</code> مرتبطةً بالمجرى | يعيد التابع <code>to_write_io</code> نسخةً من الصنف <code>IO</code> مرتبطةً بالمجرى <code>ARGF</code> للكتابة عليها في حال كان الوضع <code>inplace</code> مفعَّلًا. | ||
===[[Ruby/ARGF/write | | ===[[Ruby/ARGF/write|<code>write</code>]]=== | ||
يكتب التابع <code>write</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
مفعَّلًا.