TelephoneNumber adalah permata validasi nomor telepon global berdasarkan perpustakaan libphonenumber Google.
Jangan ragu untuk melihat demo kami!
Nomor jack
Tambahkan baris ini ke Gemfile aplikasi Anda:
gem 'telephone_number'
Dan kemudian jalankan:
$ bundle
Atau instal sendiri sebagai:
$ gem install telephone_number
Perpustakaan ini memerlukan Ruby 2.4 atau lebih baru.
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
harus menghasilkan kode negara dua huruf yang valid seperti :us
, :ca
atau 'DE'
String
atau Symbol
alih-alih Proc
. Anda dapat memperoleh objek TelephoneNumber
dengan menelepon:
phone_object = TelephoneNumber.parse("3175082237", :us) ==>
#
Setelah itu Anda memiliki metode contoh berikut yang tersedia untuk Anda.
valid_types
Mengembalikan semua jenis nomor yang dianggap valid.
phone_object.valid_types ==> [:fixed_line, :mobile, :toll_free]
valid?
Mengembalikan nilai boolean yang menunjukkan apakah valid_types
kosong atau tidak.
phone_object.valid? ==> true
national_number(formatted: true)
Mengembalikan nomor berformat nasional termasuk karakter khusus seperti tanda kurung dan tanda hubung. Anda dapat menghilangkan karakter khusus dengan meneruskan formatted: false
phone_object.national_number ==> "(317) 508-2237"
international_number(formatted: true)
Mengembalikan nomor berformat internasional termasuk karakter khusus seperti tanda kurung dan tanda hubung. Anda dapat menghilangkan karakter khusus dengan meneruskan formatted: false
phone_object.international_number ==> "+1 317-508-2237"
e164_number(formatted: true)
Mengembalikan nomor berformat internasional termasuk karakter khusus seperti tanda kurung dan tanda hubung. Anda dapat menghilangkan karakter khusus dengan meneruskan formatted: false
phone_object.e164_number ==> "+13175082237"
country
Mengembalikan objek yang berisi data terkait negara nomor tersebut.
phone_object.country ===>
#
location
Mengembalikan lokasi nomor tersebut. Lokal default adalah :en
phone_object.location ==> "Indiana"
phone_object.location(:ja) ==> "ソウル特別市"
timezone
Mengembalikan zona waktu nomor tersebut.
phone_object.timezone ==> "America/New_York"
Anda juga memiliki metode kelas berikut yang tersedia untuk Anda.
parse
Mengembalikan objek Nomor Telepon.
TelephoneNumber.parse("3175082237", :US)
Jika Anda memberikan nomor berformat E164, kami akan menentukan negaranya dengan cepat.
TelephoneNumber.parse("+13175082237")
valid?
Mengembalikan nilai boolean yang menunjukkan valid atau tidaknya suatu angka tertentu.
TelephoneNumber.valid?("3175082237", :US) ==> true
Jika Anda ingin memvalidasi terhadap sekumpulan kunci tertentu, Anda dapat meneruskan serangkaian kunci
TelephoneNumber.valid?("3175082237", :US, [:mobile, :fixed_line]) ==> true
TelephoneNumber.valid?("3175082237", :US, [:toll_free]) ==> false
invalid?
Mengembalikan nilai boolean yang menunjukkan apakah nomor tertentu tidak valid atau tidak.
TelephoneNumber.invalid?("3175082237", :US) ==> false
Jika Anda ingin membatalkan validitas terhadap sekumpulan kunci tertentu, Anda dapat meneruskan serangkaian kunci
TelephoneNumber.invalid?("3175082237", :US, [:mobile, :fixed_line]) ==> false
TelephoneNumber.invalid?("3175082237", :US, [:toll_free]) ==> true
Jika Anda perlu mengganti data yang disediakan Google, Anda dapat melakukannya dengan menyetel file penggantian. File ini diharapkan memiliki format yang sama dengan milik Google dan juga diserialkan menggunakan Marshal.
Untuk menghasilkan file override serial:
ruby bin/console
TelephoneNumber.generate_override_file("/path/to/file")
Dalam contoh ini, /path/to/file
mewakili file xml yang memiliki data khusus Anda dalam struktur yang sama dengan data Google.
Anda dapat mengatur file override dengan:
TelephoneNumber.override_file = "/path/to_file.dat"
Jika Nomor Telepon diberikan nomor yang tidak valid dan kemudian diminta untuk memformat nomor tersebut, nomor tersebut hanya akan mengembalikan string yang belum diformat dari nomor asli yang diteruskan. Hal ini karena aturan format tidak akan ditemukan untuk nomor yang tidak valid. Jika hal ini tidak dapat diterima, Anda dapat menyetel default_format_pattern
dan default_format_string
yang akan digunakan Nomor Telepon untuk mencoba memformat nomor yang tidak valid.
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"
Setelah memeriksa repo, jalankan bin/setup
untuk menginstal dependensi. Kemudian, jalankan rake test
untuk menjalankan pengujian. Anda juga dapat menjalankan bin/console
untuk perintah interaktif yang memungkinkan Anda bereksperimen.
Saat mengembangkan fungsi baru, Anda mungkin ingin menguji nomor telepon tertentu. Untuk melakukan ini, tambahkan nomor ke lib/telephone_number/test_data_generator.rb
lalu jalankan rake data:test:import
. Perintah ini akan menjangkau aplikasi demo yang disediakan oleh Google dan mengambil format yang benar untuk diuji.
Untuk memasang permata ini ke mesin lokal Anda, jalankan bundle exec rake install
.
Laporan bug dan permintaan penarikan diterima di GitHub di https://github.com/mobi/telephone_number. Proyek ini dimaksudkan untuk menjadi ruang kolaborasi yang aman dan ramah, dan kontributor diharapkan mematuhi kode etik Perjanjian Kontributor.
Permata ini tersedia sebagai sumber terbuka berdasarkan ketentuan Lisensi MIT.