Module: Kontact::Brazil
- Defined in:
- lib/kontact/brazil.rb
Constant Summary collapse
- DDD =
%w[ 11 12 13 14 15 16 17 18 19 21 22 24 27 28 31 32 33 34 35 37 38 41 42 43 44 45 46 47 48 49 51 53 54 55 61 62 63 64 65 66 67 68 69 71 73 74 75 77 79 81 82 83 84 85 86 87 88 89 91 92 93 94 95 96 97 98 99 ].freeze
- PATTERN =
[ /\A\+55 \((\d{2})\) 9\d{4}-\d{4}\z/, /\A\((\d{2})\) 9\d{4}-\d{4}\z/, /\A\+55 \((\d{2})\) [2-5]\d{3}-\d{4}\z/, /\A\((\d{2})\) [2-5]\d{3}-\d{4}\z/, /\A\+55(\d{2})9\d{8}\z/, /\A55(\d{2})9\d{8}\z/, /\A\+55(\d{2})[2-5]\d{7}\z/ ].freeze
Class Method Summary collapse
- .generate(type: :mobile, formatted: false, international_prefix: false) ⇒ Object
- .valid?(number) ⇒ Boolean
Class Method Details
.generate(type: :mobile, formatted: false, international_prefix: false) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/kontact/brazil.rb', line 30 def self.generate(type: :mobile, formatted: false, international_prefix: false) ddd = DDD.sample number = case type when :mobile "9#{rand(1000..9999)}#{formatted ? "-" : ""}#{rand(1000..9999)}" when :landline "#{rand(2000..5999)}#{formatted ? "-" : ""}#{rand(1000..9999)}" else raise ArgumentError, "Invalid type: #{type}" end n = formatted ? "55 (#{ddd}) #{number}" : "55#{ddd}#{number}" international_prefix ? "+#{n}" : n end |
.valid?(number) ⇒ Boolean
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/kontact/brazil.rb', line 44 def self.valid?(number) raise ArgumentError, "Number can not empty or blank" unless number number = number.strip PATTERN.any? do |regex| match = number.match(regex) match && DDD.include?(match[1]) end digits = number.gsub(/\D/, "") digits = digits[2..] if digits.start_with?("55") return false unless [10, 11].include?(digits.length) ddd = digits[0..1] prefix = digits[2..-5] return false unless DDD.include?(ddd) if digits.length == 11 prefix.start_with?("9") elsif digits.length == 10 prefix[0].to_i.between?(2, 5) else false end end |