يعتبر TelephoneNumber بمثابة جوهرة عالمية للتحقق من صحة رقم الهاتف استنادًا إلى مكتبة libphonenumber الخاصة بـ Google.
لا تتردد في الاطلاع على العرض التوضيحي لدينا!
نمبرجاك
أضف هذا السطر إلى ملف Gemfile الخاص بالتطبيق الخاص بك:
gem 'telephone_number'
ومن ثم تنفيذ:
$ bundle
أو قم بتثبيته بنفسك على النحو التالي:
$ gem install telephone_number
تتطلب هذه المكتبة Ruby 2.4 أو الأحدث.
validates :my_attribute_name, telephone_number: {country: proc{|record| record.country}, types: [:fixed_line, :mobile, etc]}
:area_code_optional
:fixed_line
:mobile
:no_international_dialling
:pager
:personal_number
:premium_rate
:shared_cost
:toll_free
:uan
:voicemail
:voip
record.country
رمز بلد صالحًا مكونًا من حرفين مثل :us
أو :ca
أو 'DE'
String
أو Symbol
بدلاً من Proc
. يمكنك الحصول على كائن TelephoneNumber
عن طريق الاتصال:
phone_object = TelephoneNumber.parse("3175082237", :us) ==>
#
بعد ذلك، تتوفر لك طرق المثيل التالية.
valid_types
إرجاع كافة الأنواع التي يعتبر الرقم صالحًا لها.
phone_object.valid_types ==> [:fixed_line, :mobile, :toll_free]
valid?
تُرجع قيمة منطقية تشير إلى ما إذا كانت valid_types
فارغة أم لا.
phone_object.valid? ==> true
national_number(formatted: true)
إرجاع الرقم المنسق الوطني بما في ذلك الأحرف الخاصة مثل الأقواس والشرطات. يمكنك حذف الأحرف الخاصة عن طريق تمرير formatted: false
phone_object.national_number ==> "(317) 508-2237"
international_number(formatted: true)
إرجاع الرقم المنسق الدولي بما في ذلك الأحرف الخاصة مثل الأقواس والشرطات. يمكنك حذف الأحرف الخاصة عن طريق تمرير formatted: false
phone_object.international_number ==> "+1 317-508-2237"
e164_number(formatted: true)
إرجاع الرقم المنسق الدولي بما في ذلك الأحرف الخاصة مثل الأقواس والشرطات. يمكنك حذف الأحرف الخاصة عن طريق تمرير formatted: false
phone_object.e164_number ==> "+13175082237"
country
إرجاع كائن يحتوي على بيانات تتعلق ببلد الرقم.
phone_object.country ===>
#
location
إرجاع موقع الرقم. اللغة الافتراضية هي :en
en
phone_object.location ==> "Indiana"
phone_object.location(:ja) ==> "ソウル特別市"
timezone
إرجاع المنطقة الزمنية للرقم.
phone_object.timezone ==> "America/New_York"
لديك أيضًا طرق الفصل التالية المتاحة لك.
parse
إرجاع كائن رقم الهاتف.
TelephoneNumber.parse("3175082237", :US)
إذا قمت بتمرير رقم بتنسيق E164، فسنحدد البلد بسرعة.
TelephoneNumber.parse("+13175082237")
valid?
إرجاع قيمة منطقية تشير إلى ما إذا كان رقم معين صالحًا أم لا.
TelephoneNumber.valid?("3175082237", :US) ==> true
إذا كنت تريد التحقق من صحة مجموعة محددة من المفاتيح، فيمكنك تمرير مجموعة من المفاتيح
TelephoneNumber.valid?("3175082237", :US, [:mobile, :fixed_line]) ==> true
TelephoneNumber.valid?("3175082237", :US, [:toll_free]) ==> false
invalid?
إرجاع قيمة منطقية تشير إلى ما إذا كان رقم معين غير صالح أم لا.
TelephoneNumber.invalid?("3175082237", :US) ==> false
إذا كنت تريد إبطال مجموعة محددة من المفاتيح، فيمكنك تمرير مجموعة من المفاتيح
TelephoneNumber.invalid?("3175082237", :US, [:mobile, :fixed_line]) ==> false
TelephoneNumber.invalid?("3175082237", :US, [:toll_free]) ==> true
وفي حالة احتياجك إلى تجاوز البيانات التي توفرها جوجل، يمكنك القيام بذلك عن طريق تعيين ملف تجاوز. من المتوقع أن يكون هذا الملف بنفس تنسيق Google بالإضافة إلى أنه متسلسل باستخدام Marshal.
لإنشاء ملف تجاوز متسلسل:
ruby bin/console
TelephoneNumber.generate_override_file("/path/to/file")
في هذه الحالة، يمثل /path/to/file
ملف xml يحتوي على بياناتك المخصصة بنفس البنية التي توجد بها بيانات Google.
يمكنك ضبط ملف التجاوز باستخدام:
TelephoneNumber.override_file = "/path/to_file.dat"
إذا تم تمرير رقم الهاتف رقمًا غير صالح ثم طُلب منه تنسيق هذا الرقم، فسيقوم ببساطة بإرجاع سلسلة غير منسقة من الرقم الذي تم تمريره في الأصل. وذلك لأنه لن يتم العثور على قواعد التنسيق للأرقام غير الصالحة. إذا كان هذا غير مقبول، فيمكنك تعيين default_format_pattern
و default_format_string
الذي سيستخدمه TelephoneNumber لتنسيق الأرقام غير الصالحة.
TelephoneNumber.default_format_pattern = "(\d{3})(\d{3})(\d*)"
TelephoneNumber.default_format_string = "($1) $2-$3"
invalid_number = "1111111111"
phone_object = TelephoneNumber.parse(invalid_number, :US)
phone_object.national_number ==> "(111) 111-1111"
بعد التحقق من الريبو، قم بتشغيل bin/setup
لتثبيت التبعيات. ثم قم بتشغيل rake test
لتشغيل الاختبارات. يمكنك أيضًا تشغيل bin/console
للحصول على مطالبة تفاعلية تسمح لك بالتجربة.
أثناء تطوير وظائف جديدة، قد ترغب في اختبارها مقابل أرقام هواتف محددة. للقيام بذلك، أضف الرقم إلى lib/telephone_number/test_data_generator.rb
ثم قم بتشغيل rake data:test:import
. سيصل هذا الأمر إلى التطبيق التجريبي الذي توفره Google ويسحب التنسيقات الصحيحة لاختبارها.
لتثبيت هذه الجوهرة على جهازك المحلي، قم بتشغيل bundle exec rake install
.
نرحب بتقارير الأخطاء وطلبات السحب على GitHub على https://github.com/mobi/telephone_number. يهدف هذا المشروع إلى أن يكون مساحة آمنة ومرحبة للتعاون، ومن المتوقع أن يلتزم المساهمون بمدونة قواعد السلوك الخاصة بعهد المساهمين.
الجوهرة متاحة كمصدر مفتوح بموجب شروط ترخيص MIT.