kontact 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/kontact/brazil.rb +34 -14
- data/lib/kontact/usa.rb +15 -10
- data/lib/kontact/version.rb +1 -1
- data/lib/kontact.rb +31 -4
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 16404ff6239dd1e82e910bd4005283bbeae32ebe1d0bb8f208732f9fd521ae64
|
4
|
+
data.tar.gz: 0d33957070f27bc246722299d37275ad198f18628b48fbf13832755b8a2c771d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5a858b95baaaa1521eb34cc5cc6346ba666b3a8f63d4c41c8483dbe090537ba349f5df2ee9e2b42359d4bc6f5a4d3c6e2116ecbdcda9e34207da819a724c91aa
|
7
|
+
data.tar.gz: c30309d06aa9c307e19093363ed7350d4c7593b8b43a1c775a9f6fc8e5c0aa6f392c50af407564934e60e758cdc8889baf174bbb234fa8c86ed4fa1bf180cf1a
|
data/lib/kontact/brazil.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module Kontact
|
2
2
|
module Brazil
|
3
|
-
|
3
|
+
DDD = %w[
|
4
4
|
11 12 13 14 15 16 17 18 19
|
5
5
|
21 22 24
|
6
6
|
27 28
|
@@ -15,32 +15,52 @@ module Kontact
|
|
15
15
|
79
|
16
16
|
81 82 83 84 85 86 87 88 89
|
17
17
|
91 92 93 94 95 96 97 98 99
|
18
|
-
]
|
18
|
+
].freeze
|
19
19
|
|
20
|
-
|
21
|
-
|
20
|
+
PATTERN = [
|
21
|
+
/\A\+55 \((\d{2})\) 9\d{4}-\d{4}\z/,
|
22
|
+
/\A\((\d{2})\) 9\d{4}-\d{4}\z/,
|
23
|
+
/\A\+55 \((\d{2})\) [2-5]\d{3}-\d{4}\z/,
|
24
|
+
/\A\((\d{2})\) [2-5]\d{3}-\d{4}\z/,
|
25
|
+
/\A\+55(\d{2})9\d{8}\z/,
|
26
|
+
/\A\+55(\d{2})[2-5]\d{7}\z/
|
27
|
+
].freeze
|
28
|
+
|
29
|
+
def self.generate(type: :mobile, formatted: false)
|
30
|
+
ddd = DDD.sample
|
22
31
|
number = case type
|
23
32
|
when :mobile
|
24
|
-
"9#{rand(1000..9999)}
|
33
|
+
"9#{rand(1000..9999)}#{formatted ? "-" : ""}#{rand(1000..9999)}"
|
25
34
|
when :landline
|
26
|
-
"#{rand(2000..5999)}
|
35
|
+
"#{rand(2000..5999)}#{formatted ? "-" : ""}#{rand(1000..9999)}"
|
27
36
|
else
|
28
37
|
raise ArgumentError, "Invalid type: #{type}"
|
29
38
|
end
|
30
|
-
"+55 #{ddd} #{number}"
|
39
|
+
formatted ? "+55 (#{ddd}) #{number}" : "+55#{ddd}#{number}"
|
31
40
|
end
|
32
41
|
|
33
42
|
def self.valid?(number)
|
34
|
-
|
35
|
-
|
43
|
+
raise ArgumentError, "Number can not empty or blank" unless number
|
44
|
+
|
45
|
+
number = number.strip
|
46
|
+
|
47
|
+
PATTERN.any? do |regex|
|
48
|
+
match = number.match(regex)
|
49
|
+
match && DDD.include?(match[1])
|
50
|
+
end
|
51
|
+
|
52
|
+
digits = number.gsub(/\D/, "")
|
53
|
+
digits = digits[2..] if digits.start_with?("55")
|
54
|
+
return false unless [10, 11].include?(digits.length)
|
55
|
+
|
56
|
+
ddd = digits[0..1]
|
57
|
+
prefix = digits[2..-5]
|
36
58
|
|
37
|
-
|
38
|
-
prefix = match[2]
|
39
|
-
return false unless DDDs.include?(ddd)
|
59
|
+
return false unless DDD.include?(ddd)
|
40
60
|
|
41
|
-
if
|
61
|
+
if digits.length == 11
|
42
62
|
prefix.start_with?("9")
|
43
|
-
elsif
|
63
|
+
elsif digits.length == 10
|
44
64
|
prefix[0].to_i.between?(2, 5)
|
45
65
|
else
|
46
66
|
false
|
data/lib/kontact/usa.rb
CHANGED
@@ -45,12 +45,17 @@ module Kontact
|
|
45
45
|
941 947 948 949 951 952 954 956 957
|
46
46
|
959 970 971 972 973 975 976 978 979
|
47
47
|
980 984 985 986 989
|
48
|
+
].freeze
|
49
|
+
|
50
|
+
PATTERN = [
|
51
|
+
/\A\+1 \((\d{3})\) (\d{3})-(\d{4})\z/, # formatado
|
52
|
+
/\A\+1(\d{3})(\d{3})(\d{4})\z/ # compacto
|
48
53
|
]
|
49
54
|
|
50
|
-
def self.generate(
|
55
|
+
def self.generate(formatted: false)
|
51
56
|
area = AREAS.sample
|
52
57
|
line_number = rand(1000..9999)
|
53
|
-
"+1 #{area} #{valid_prefix}-#{line_number}"
|
58
|
+
formatted ? "+1 (#{area}) #{valid_prefix}-#{line_number}" : "+1#{area}#{valid_prefix}#{line_number}"
|
54
59
|
end
|
55
60
|
|
56
61
|
def self.valid_prefix
|
@@ -61,16 +66,16 @@ module Kontact
|
|
61
66
|
end
|
62
67
|
|
63
68
|
def self.valid?(number)
|
64
|
-
|
65
|
-
return false unless match
|
69
|
+
raise ArgumentError, "Number can not be empty or blank" if number.nil? || number.strip.empty?
|
66
70
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
return false if [911, 411, 555].include?(prefix)
|
71
|
-
return false unless prefix.to_s[0].match?(/[2-9]/)
|
71
|
+
PATTERN.any? do |regex|
|
72
|
+
match = number.match(regex)
|
73
|
+
next false unless match
|
72
74
|
|
73
|
-
|
75
|
+
area = match[1]
|
76
|
+
prefix = match[2].to_i
|
77
|
+
AREAS.include?(area) && ![911, 411, 555].include?(prefix) && prefix.to_s[0].match?(/[2-9]/)
|
78
|
+
end
|
74
79
|
end
|
75
80
|
end
|
76
81
|
end
|
data/lib/kontact/version.rb
CHANGED
data/lib/kontact.rb
CHANGED
@@ -3,18 +3,20 @@ require_relative "kontact/brazil"
|
|
3
3
|
require_relative "kontact/usa"
|
4
4
|
|
5
5
|
module Kontact
|
6
|
-
def self.generate(country, type
|
6
|
+
def self.generate(country: :brazil, type: :mobile, formatted: false)
|
7
|
+
validate_country(country)
|
7
8
|
case country.to_sym
|
8
9
|
when :brazil
|
9
|
-
Brazil.generate(type)
|
10
|
+
Brazil.generate(type: type, formatted: formatted)
|
10
11
|
when :usa
|
11
|
-
USA.generate(
|
12
|
+
USA.generate(formatted: formatted)
|
12
13
|
else
|
13
14
|
raise ArgumentError, "Unsupported country: #{country}"
|
14
15
|
end
|
15
16
|
end
|
16
17
|
|
17
|
-
def self.valid?(number, country)
|
18
|
+
def self.valid?(number, country: :brazil)
|
19
|
+
validate_country(country)
|
18
20
|
raise ArgumentError, "Number can not empty or blank" unless number
|
19
21
|
|
20
22
|
case country.to_sym
|
@@ -26,4 +28,29 @@ module Kontact
|
|
26
28
|
raise ArgumentError, "Unsupported country: #{country}"
|
27
29
|
end
|
28
30
|
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def self.detect_country
|
35
|
+
locale = ENV["LANG"] || ENV["LC_ALL"] || ENV["LC_MESSAGES"] || ""
|
36
|
+
case locale.downcase
|
37
|
+
when /pt[-_]br/
|
38
|
+
:brazil
|
39
|
+
when /en[-_]us/
|
40
|
+
:usa
|
41
|
+
else
|
42
|
+
:brazil # as a main fallback
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.validate_country(country)
|
47
|
+
case country.to_sym
|
48
|
+
when :brazil
|
49
|
+
:brazil
|
50
|
+
when :usa
|
51
|
+
:usa
|
52
|
+
else
|
53
|
+
raise ArgumentError, "Unsupported country: #{country}"
|
54
|
+
end
|
55
|
+
end
|
29
56
|
end
|