الفرق بين المراجعتين ل"Ruby/Encoding/Converter/new"

من موسوعة حسوب
< Ruby‏ | Encoding‏ | Converter
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'{{DISPLAYTITLE:التابع Encoding::Converter.new في روبي}} يُنشئ التّابع <code>new::</code> كائنًا جديدًا من الصنف <code>Encodin...')
 
ط (مراجعة وتدقيق.)
 
(6 مراجعات متوسطة بواسطة مستخدم واحد آخر غير معروضة)
سطر 1: سطر 1:
{{DISPLAYTITLE:التابع Encoding::Converter.new في روبي}}
+
{{DISPLAYTITLE:التابع <code>Encoding::Converter.new‎</code> في روبي}}
 
+
يُنشئ التّابع <code>new::</code> كائنًا جديدًا من الصنف <code>[[Ruby/Encoding/Converter|Encoding::Converter]]</code>. التّرميز المصدر والتّرميز الوجهة يجب أن يكونا إما سلسلةً نصّيةً أو كائنًا من الصّنف <code>[[Ruby/Encoding|Encoding]]</code>.
يُنشئ التّابع <code>new::</code> كائنًا جديدًا من الصنف <code>Encoding::Converter</code>. التّرميز المصدر والتّرميز الوجهة يجب أن يكونا إما سلسلةً نصّيةً أو كائنًا من الصّنف <code>Encoding</code>.
 
  
 
يقبل التّابع <code>new::</code> اختياريًّا أن يمرر إليه خيارٌ من النوع <code>hash</code> أو <code>integer</code>. عندما يكون من النوع <code>hash</code>، فمن الممكن أن يحتوي على <code>‎:invalid => nil</code> وغيرها. وعندما يكون من النوع <code>integer</code>، فإنه يجب أن يكون منطقيًّا (logical)، أو أحد الثوابت المعرَّفة مثل <code>Encoding::Converter::INVALID_REPLACE</code> وغيرها.
 
يقبل التّابع <code>new::</code> اختياريًّا أن يمرر إليه خيارٌ من النوع <code>hash</code> أو <code>integer</code>. عندما يكون من النوع <code>hash</code>، فمن الممكن أن يحتوي على <code>‎:invalid => nil</code> وغيرها. وعندما يكون من النوع <code>integer</code>، فإنه يجب أن يكون منطقيًّا (logical)، أو أحد الثوابت المعرَّفة مثل <code>Encoding::Converter::INVALID_REPLACE</code> وغيرها.
  
 
تكون بنية الخيار الممرر إلى التابع عندما يكون من النوع <code>hash</code> بالشكل:
 
تكون بنية الخيار الممرر إلى التابع عندما يكون من النوع <code>hash</code> بالشكل:
 +
* '''<code>invalid => nil</code>''': يرمي خطأً عند سلسلة بايتٍ غير صالحةٍ (القيمة الافتراضية).
 +
* '''<code>invalid => :replace</code>''': يستبدل سلسلة البايت غير الصّالحة.
 +
* '''<code>undef => nil</code>''': يرمي استثناءً عند تحويلٍ غير معرّف (القيمة الافتراضية).
 +
* '''<code>undef => :replace</code>''': يستبدل التحويلات غير المعرّفة.
 +
* '''<code>replace => string</code>''': يستبدل سلسلة ("?" أو "\uFFFD" إذا لم يُحَّدد أي شيء).
 +
* '''<code>newline => :universal</code>''': ينشئ مُزخرِفًا لتحويل <code>CRLF</code> و <code>CR</code> إلى <code>LF</code>.
 +
* '''<code>newline => :crlf</code>''': ينشئ مُزخرِفًا لتحويل <code>LF</code> إلى <code>CRLF</code>.
 +
* '''<code>newline => :cr</code>''': ينشئ مُزخرِفًا لتحويل <code>LF</code> إلى <code>CR</code>.
 +
* '''<code>universal_newline => true</code>''': ينشئ مُزخرِفًا لتحويل <code>CRLF</code>و <code>CR</code> إلى <code>LF</code>.
 +
* '''<code>crlf_newline => true</code>''': بنشئ مُزخرِفًا لتحويل <code>LF</code> إلى <code>CRLF</code>.
 +
* '''<code>cr_newline => true</code>''': ينشئ مُزخرِفًا لتحويل <code>LF</code> إلى <code>CR</code>.
 +
* '''<code>xml => :text</code>:''' هروب على شكل <code>CharData</code>. يمكن أن تستخدم هذه الصيغة على أنها (HTML 4.0 #PCDATA).
 +
** <code>'‎&' -> '&amp;amp;‎'</code>
 +
** <code>'‎<' -> '&amp;lt;‎'</code>
 +
** <code>'‎>' -> '&amp;gt;‎'</code>
 +
** المحارف غير المعرفة في التابع <code>CharRef <- destination_encoding</code> ست عشرية مثل ‎<code>&#xHH</code>.
  
<code>invalid => nil</code>: يرمي خطأً عند سلسلة بايتٍ غير صالحةٍ (القيمة الافتراضية).
+
* '''<code>xml => :attr</code>''': هروب على شكل <code>AttValue</code>. توضع النتيجة بعد التحويل بين علامتي اقتباس بالشكل "…". يمكن أن تستخدم هذه الصيغة على أنها قيمة خاصيّة <code>HTML</code>.
 
+
** <code>'&' -> '&amp;amp;‎'</code>
<code>invalid => :replace</code>: يستبدل سلسلة البايت غير الصّالحة.
+
** <code>'<' -> '&amp;lt;'</code>
 
+
** <code>'>' -> '&amp;gt;'</code>
<code>undef => nil</code>: يرمي استثناءً عند تحويلٍ غير معرّف (القيمة الافتراضية).
+
** <code>'‎“' -> '&amp;quot;'</code>
 
+
** المحارف غير المعرفة في التابع <code>CharRef <- destination_encoding</code> الست عشري مثل <code>‎&#xHH</code>.
undef => :replace: يستبدل التحويلات غير المعرّفة.
+
وتكون بنية الخيار الممرر إلى التابع عندما يكون من النوع <code>integer</code> بالشكل:
 
+
*  <code>Encoding::Converter::INVALID_REPLACE</code>
replace => string: يستبدل سلسلة ("?" أو "\uFFFD" إذا لم يُحَّدد أي شيء).
+
* <code> Encoding::Converter::UNDEF_REPLACE</code>
 
+
* <code> Encoding::Converter::UNDEF_HEX_CHARREF</code>
newline => :universal: ينشئ مُزخرِفًا لتحويل CRLF و CR إلى LF.
+
* <code> Encoding::Converter::UNIVERSAL_NEWLINE_DECORATOR</code>
 
+
* <code> Encoding::Converter::CRLF_NEWLINE_DECORATOR</code>
newline => :crlf: ينشئ مُزخرِفًا لتحويل LF إلى CRLF.
+
* <code> Encoding::Converter::CR_NEWLINE_DECORATOR</code>
 
+
* <code> Encoding::Converter::XML_TEXT_DECORATOR</code>
newline => :cr: ينشئ مُزخرِفًا لتحويل LF إلى CR.
+
* <code> Encoding::Converter::XML_ATTR_CONTENT_DECORATOR</code>
 
+
* <code> Encoding::Converter::XML_ATTR_QUOTE_DECORATOR</code>
universal_newline => true: ينشئ مُزخرِفًا لتحويل CRLF و CR إلى LF.
 
 
 
crlf_newline => true: بنشئ مُزخرِفًا لتحويل LF إلى CRLF.
 
 
 
cr_newline => true: ينشئ مُزخرِفًا لتحويل LF إلى CR.
 
 
 
xml => :text:
 
 
 
هروب على شكل CharData. يمكن أن تستخدم هذه الصيغة على أنها (HTML 4.0 #PCDATA).
 
 
 
'&' -> '&amp;'
 
 
 
'<' -> '&lt;'
 
 
 
'>' -> '&gt;'
 
 
 
المحارف غير المعرفة في التابع CharRef <- destination_encoding ست عشرية مثل ‎&#xHH.
 
 
 
xml => :attr:
 
 
 
هروب على شكل AttValue. توضع النتيجة بعد التحويل بين علامتي اقتباس بالشكل "…". يمكن أن تستخدم هذه الصيغة على أنها قيمة خاصيّة HTML.
 
 
 
'&' -> '&amp;'
 
 
 
'<' -> '&lt;'
 
 
 
'>' -> '&gt;'
 
 
 
'' -> '&quot;'
 
 
 
المحارف غير المعرفة في التابع CharRef <- destination_encoding الست عشري مثل ‎&#xHH.
 
 
 
وتكون بنية الخيار الممرر إلى التابع عندما يكون من النوع integer بالشكل::
 
 
 
 Encoding::Converter::INVALID_REPLACE
 
 
 
 Encoding::Converter::UNDEF_REPLACE
 
 
 
 Encoding::Converter::UNDEF_HEX_CHARREF
 
 
 
 Encoding::Converter::UNIVERSAL_NEWLINE_DECORATOR
 
 
 
 Encoding::Converter::CRLF_NEWLINE_DECORATOR
 
 
 
 Encoding::Converter::CR_NEWLINE_DECORATOR
 
 
 
 Encoding::Converter::XML_TEXT_DECORATOR
 
 
 
 Encoding::Converter::XML_ATTR_CONTENT_DECORATOR
 
 
 
 Encoding::Converter::XML_ATTR_QUOTE_DECORATOR
 
  
 
== البنية العامة ==
 
== البنية العامة ==
 +
<syntaxhighlight lang="ruby">
 
Encoding::Converter.new(source_encoding, destination_encoding)
 
Encoding::Converter.new(source_encoding, destination_encoding)
  
سطر 81: سطر 46:
  
 
Encoding::Converter.new(convpath)
 
Encoding::Converter.new(convpath)
 +
 +
 +
</syntaxhighlight>
  
 
== المعاملات ==
 
== المعاملات ==
source_encoding
+
<code>source_encoding</code>
  
 
سلسلةً نصّيةً (string) أو كائنًا يمثَّل التّرميز المصدر الذي يراد إنشاء كائن منه.
 
سلسلةً نصّيةً (string) أو كائنًا يمثَّل التّرميز المصدر الذي يراد إنشاء كائن منه.
  
destination_encoding
+
<code>destination_encoding</code>
  
 
سلسلةٌ نصّيةٌ (string) أو كائنٌ يمثَّل التّرميز الوجهة الجديد.
 
سلسلةٌ نصّيةٌ (string) أو كائنٌ يمثَّل التّرميز الوجهة الجديد.
  
opt
+
<code>opt</code>
  
 
يجب أن يكون هذا المعامل قيمةً عدميّةً (nil)، أو خريطةً (hash)، أو عددًا صحيحًا (integer).
 
يجب أن يكون هذا المعامل قيمةً عدميّةً (nil)، أو خريطةً (hash)، أو عددًا صحيحًا (integer).
  
convpath
+
<code>convpath</code>
  
 
يجب أن يكون هذا المعامل مصفوفة (array)، ويمكن أن تحتوي على:
 
يجب أن يكون هذا المعامل مصفوفة (array)، ويمكن أن تحتوي على:
 
+
* عنصرين يمثلان كائن التّرميز أو اسمه، أو
عنصرين يمثلان كائن التّرميز أو اسمه، أو
+
* سلاسل نصّية تمثّل أسماء المزخرِفات (decorator names).
 
 
سلاسل نصّية تمثّل أسماء المزخرِفات (decorator names).
 
  
 
== أمثلة ==
 
== أمثلة ==
مثالٌ عن استخدام التابع new:
+
مثالٌ عن استخدام التابع new:<syntaxhighlight lang="ruby">
#UTF-16BE to UTF-8
+
# UTF-16BE to UTF-8
 
ec = Encoding::Converter.new("UTF-16BE", "UTF-8")
 
ec = Encoding::Converter.new("UTF-16BE", "UTF-8")
#Usually, decorators such as newline conversion are inserted last.
+
 
 +
# Usually, decorators such as newline conversion are inserted last.
 
ec = Encoding::Converter.new("UTF-16BE", "UTF-8", :universal_newline => true)
 
ec = Encoding::Converter.new("UTF-16BE", "UTF-8", :universal_newline => true)
 
 
p ec.convpath #=> [[#<Encoding:UTF-16BE>, #<Encoding:UTF-8>],
 
p ec.convpath #=> [[#<Encoding:UTF-16BE>, #<Encoding:UTF-8>],
 +
              #    "universal_newline"]
  
             #    "universal_newline"]
+
# But, if the last encoding is ASCII incompatible,
#But, if the last encoding is ASCII incompatible,
+
# decorators are inserted before the last conversion.
 
 
#decorators are inserted before the last conversion.
 
 
ec = Encoding::Converter.new("UTF-8", "UTF-16BE", :crlf_newline => true)
 
ec = Encoding::Converter.new("UTF-8", "UTF-16BE", :crlf_newline => true)
 
 
p ec.convpath #=> ["crlf_newline",
 
p ec.convpath #=> ["crlf_newline",
 +
              #    [#<Encoding:UTF-8>, #<Encoding:UTF-16BE>]]
  
             #    [#<Encoding:UTF-8>, #<Encoding:UTF-16BE>]]
+
# Conversion path can be specified directly.
#Conversion path can be specified directly.
 
 
ec = Encoding::Converter.new(["universal_newline", ["EUC-JP", "UTF-8"], ["UTF-8", "UTF-16BE"]])
 
ec = Encoding::Converter.new(["universal_newline", ["EUC-JP", "UTF-8"], ["UTF-8", "UTF-16BE"]])
 
 
p ec.convpath #=> ["universal_newline",
 
p ec.convpath #=> ["universal_newline",
 +
              #    [#<Encoding:EUC-JP>, #<Encoding:UTF-8>],
 +
              #    [#<Encoding:UTF-8>, #<Encoding:UTF-16BE>]]
  
             #    [#<Encoding:EUC-JP>, #<Encoding:UTF-8>],
+
</syntaxhighlight>
 
 
             #    [#<Encoding:UTF-8>, #<Encoding:UTF-16BE>]]
 
  
 
== انظر أيضًا ==
 
== انظر أيضًا ==
التّابع last_error: يُعيد الكائن exception عند حصول خطأٍ في آخر عملية تحويل أو يعيد القيمة nil إن لم يحصل أي خطأ.
+
* التّابع <code>[[Ruby/Encoding/Converter/last error|last_error]]</code>: يُعيد الكائن <code>exception</code> عند حصول خطأٍ في آخر عملية تحويل أو يعيد القيمة <code>nil</code> إن لم يحصل أي خطأ.
 
+
* التّابع <code>[[Ruby/Encoding/Converter/destination encoding|destination_encoding]]</code>: يُعيد التّرميز الوجهة على شكل كائنٍ من الصنف <code>[[Ruby/Encoding|Encoding]]</code>.
التّابع destination_encoding: يُعيد التّرميز الوجهة على شكل كائنٍ من الصنف Encoding.
+
* التّابع <code>[[Ruby/Encoding/Converter/source encoding|source_encoding]]</code>: يُعيد الترميز المصدر على شكل كائن من الصنف [[Ruby/Encoding|<code>Encoding</code>]].
 
 
التّابع source_encoding: يُعيد الترميز المصدر على شكل كائن من الصنف Encoding.
 
  
 
== مصادر ==
 
== مصادر ==
[http://ruby-doc.org/core-2.5.1/Encoding/Converter.html#method-c-new صفحة التابع new في الصنف Encoding::Converter في توثيق روبي الرسمي.]
+
* [http://ruby-doc.org/core-2.5.1/Encoding/Converter.html#method-c-new صفحة التابع new في الصنف Encoding::Converter في توثيق روبي الرسمي.]
 
[[تصنيف:Ruby]]
 
[[تصنيف:Ruby]]
 
[[تصنيف:Ruby Method]]
 
[[تصنيف:Ruby Method]]
 +
[[تصنيف:Ruby Encoding]]
 
[[تصنيف:Ruby Encoding::Converter]]
 
[[تصنيف:Ruby Encoding::Converter]]

المراجعة الحالية بتاريخ 07:21، 15 أكتوبر 2018

يُنشئ التّابع new:: كائنًا جديدًا من الصنف Encoding::Converter. التّرميز المصدر والتّرميز الوجهة يجب أن يكونا إما سلسلةً نصّيةً أو كائنًا من الصّنف Encoding.

يقبل التّابع new:: اختياريًّا أن يمرر إليه خيارٌ من النوع hash أو integer. عندما يكون من النوع hash، فمن الممكن أن يحتوي على ‎:invalid => nil وغيرها. وعندما يكون من النوع integer، فإنه يجب أن يكون منطقيًّا (logical)، أو أحد الثوابت المعرَّفة مثل Encoding::Converter::INVALID_REPLACE وغيرها.

تكون بنية الخيار الممرر إلى التابع عندما يكون من النوع hash بالشكل:

  • invalid => nil: يرمي خطأً عند سلسلة بايتٍ غير صالحةٍ (القيمة الافتراضية).
  • invalid => :replace: يستبدل سلسلة البايت غير الصّالحة.
  • undef => nil: يرمي استثناءً عند تحويلٍ غير معرّف (القيمة الافتراضية).
  • undef => :replace: يستبدل التحويلات غير المعرّفة.
  • replace => string: يستبدل سلسلة ("?" أو "\uFFFD" إذا لم يُحَّدد أي شيء).
  • newline => :universal: ينشئ مُزخرِفًا لتحويل CRLF و CR إلى LF.
  • newline => :crlf: ينشئ مُزخرِفًا لتحويل LF إلى CRLF.
  • newline => :cr: ينشئ مُزخرِفًا لتحويل LF إلى CR.
  • universal_newline => true: ينشئ مُزخرِفًا لتحويل CRLFو CR إلى LF.
  • crlf_newline => true: بنشئ مُزخرِفًا لتحويل LF إلى CRLF.
  • cr_newline => true: ينشئ مُزخرِفًا لتحويل LF إلى CR.
  • xml => :text: هروب على شكل CharData. يمكن أن تستخدم هذه الصيغة على أنها (HTML 4.0 #PCDATA).
    • '‎&' -> '&amp;‎'
    • '‎<' -> '&lt;‎'
    • '‎>' -> '&gt;‎'
    • المحارف غير المعرفة في التابع CharRef <- destination_encoding ست عشرية مثل ‎&#xHH.
  • xml => :attr: هروب على شكل AttValue. توضع النتيجة بعد التحويل بين علامتي اقتباس بالشكل "…". يمكن أن تستخدم هذه الصيغة على أنها قيمة خاصيّة HTML.
    • '‎&' -> '&amp;‎'
    • '‎<' -> '&lt;‎'
    • '‎>' -> '&gt;‎'
    • '‎“' -> '&quot;‎'
    • المحارف غير المعرفة في التابع CharRef <- destination_encoding الست عشري مثل ‎&#xHH.

وتكون بنية الخيار الممرر إلى التابع عندما يكون من النوع integer بالشكل:

  •  Encoding::Converter::INVALID_REPLACE
  •  Encoding::Converter::UNDEF_REPLACE
  •  Encoding::Converter::UNDEF_HEX_CHARREF
  •  Encoding::Converter::UNIVERSAL_NEWLINE_DECORATOR
  •  Encoding::Converter::CRLF_NEWLINE_DECORATOR
  •  Encoding::Converter::CR_NEWLINE_DECORATOR
  •  Encoding::Converter::XML_TEXT_DECORATOR
  •  Encoding::Converter::XML_ATTR_CONTENT_DECORATOR
  •  Encoding::Converter::XML_ATTR_QUOTE_DECORATOR

البنية العامة

Encoding::Converter.new(source_encoding, destination_encoding)

Encoding::Converter.new(source_encoding, destination_encoding, opt)

Encoding::Converter.new(convpath)

المعاملات

source_encoding

سلسلةً نصّيةً (string) أو كائنًا يمثَّل التّرميز المصدر الذي يراد إنشاء كائن منه.

destination_encoding

سلسلةٌ نصّيةٌ (string) أو كائنٌ يمثَّل التّرميز الوجهة الجديد.

opt

يجب أن يكون هذا المعامل قيمةً عدميّةً (nil)، أو خريطةً (hash)، أو عددًا صحيحًا (integer).

convpath

يجب أن يكون هذا المعامل مصفوفة (array)، ويمكن أن تحتوي على:

  • عنصرين يمثلان كائن التّرميز أو اسمه، أو
  • سلاسل نصّية تمثّل أسماء المزخرِفات (decorator names).

أمثلة

مثالٌ عن استخدام التابع new:

# UTF-16BE to UTF-8
ec = Encoding::Converter.new("UTF-16BE", "UTF-8")

# Usually, decorators such as newline conversion are inserted last.
ec = Encoding::Converter.new("UTF-16BE", "UTF-8", :universal_newline => true)
p ec.convpath #=> [[#<Encoding:UTF-16BE>, #<Encoding:UTF-8>],
              #    "universal_newline"]

# But, if the last encoding is ASCII incompatible,
# decorators are inserted before the last conversion.
ec = Encoding::Converter.new("UTF-8", "UTF-16BE", :crlf_newline => true)
p ec.convpath #=> ["crlf_newline",
              #    [#<Encoding:UTF-8>, #<Encoding:UTF-16BE>]]

# Conversion path can be specified directly.
ec = Encoding::Converter.new(["universal_newline", ["EUC-JP", "UTF-8"], ["UTF-8", "UTF-16BE"]])
p ec.convpath #=> ["universal_newline",
              #    [#<Encoding:EUC-JP>, #<Encoding:UTF-8>],
              #    [#<Encoding:UTF-8>, #<Encoding:UTF-16BE>]]

انظر أيضًا

  • التّابع last_error: يُعيد الكائن exception عند حصول خطأٍ في آخر عملية تحويل أو يعيد القيمة nil إن لم يحصل أي خطأ.
  • التّابع destination_encoding: يُعيد التّرميز الوجهة على شكل كائنٍ من الصنف Encoding.
  • التّابع source_encoding: يُعيد الترميز المصدر على شكل كائن من الصنف Encoding.

مصادر