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
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 ให้มา คุณสามารถทำได้โดยการตั้งค่าไฟล์แทนที่ ไฟล์นี้คาดว่าจะอยู่ในรูปแบบเดียวกับของ Google และมีการซีเรียลไลซ์โดยใช้ Marshal
หากต้องการสร้างไฟล์แทนที่แบบอนุกรม:
ruby bin/console
TelephoneNumber.generate_override_file("/path/to/file")
ในกรณีนี้ /path/to/file
แสดงถึงไฟล์ xml ที่มีข้อมูลที่กำหนดเองของคุณในโครงสร้างเดียวกับข้อมูลของ Google
คุณสามารถตั้งค่าไฟล์แทนที่ด้วย:
TelephoneNumber.override_file = "/path/to_file.dat"
หาก TelephoneNumber ส่งผ่านหมายเลขที่ไม่ถูกต้อง จากนั้นขอให้จัดรูปแบบหมายเลขนั้น หมายเลขนั้นก็จะส่งคืนสตริงที่ยังไม่ได้จัดรูปแบบของหมายเลขที่ส่งไปในตอนแรก เนื่องจากจะไม่พบกฎการจัดรูปแบบสำหรับตัวเลขที่ไม่ถูกต้อง หากเป็นสิ่งที่ยอมรับไม่ได้ คุณสามารถตั้ง 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"
หลังจากตรวจสอบ repo แล้ว ให้รัน bin/setup
เพื่อติดตั้งการขึ้นต่อกัน จากนั้นรัน rake test
เพื่อทำการทดสอบ คุณยังสามารถเรียกใช้ bin/console
เพื่อรับข้อความโต้ตอบที่จะช่วยให้คุณสามารถทดลองได้
ขณะพัฒนาฟังก์ชันการทำงานใหม่ คุณอาจต้องการทดสอบกับหมายเลขโทรศัพท์ที่ระบุ ในการดำเนินการนี้ ให้เพิ่มหมายเลขลงใน lib/telephone_number/test_data_generator.rb
จากนั้นรัน rake data:test:import
คำสั่งนี้จะเข้าถึงแอปพลิเคชันสาธิตที่ Google เตรียมไว้ให้ และดึงรูปแบบที่ถูกต้องมาทดสอบ
หากต้องการติดตั้ง gem นี้ลงในเครื่องของคุณ ให้รัน bundle exec rake install
รายงานข้อผิดพลาดและคำขอดึงยินดีต้อนรับบน GitHub ที่ https://github.com/mobi/telephone_number โครงการนี้มีวัตถุประสงค์เพื่อเป็นพื้นที่ที่ปลอดภัยและเป็นมิตรสำหรับการทำงานร่วมกัน และผู้มีส่วนร่วมจะต้องปฏิบัติตามจรรยาบรรณของผู้ร่วมให้ข้อมูล
อัญมณีนี้มีให้ใช้งานในรูปแบบโอเพ่นซอร์สภายใต้เงื่อนไขของใบอนุญาต MIT