phonelib 0.6.2 → 0.6.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (141) hide show
  1. checksums.yaml +4 -4
  2. data/{README.rdoc → README.md} +116 -75
  3. data/data/extended_data.dat +0 -0
  4. data/data/libphonenumber/FALSEHOODS.md +16 -0
  5. data/data/libphonenumber/FAQ.md +8 -0
  6. data/data/libphonenumber/README.md +1 -1
  7. data/data/libphonenumber/cpp/src/phonenumbers/alternate_format.cc +108 -100
  8. data/data/libphonenumber/cpp/src/phonenumbers/lite_metadata.cc +10070 -10016
  9. data/data/libphonenumber/cpp/src/phonenumbers/metadata.cc +10938 -10884
  10. data/data/libphonenumber/cpp/src/phonenumbers/short_metadata.cc +2481 -2455
  11. data/data/libphonenumber/java/carrier/pom.xml +26 -4
  12. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/255_en +0 -0
  13. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/374_en +0 -0
  14. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/374_ru +0 -0
  15. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/421_en +0 -0
  16. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/66_en +0 -0
  17. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/91_en +0 -0
  18. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/93_fa +0 -0
  19. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/973_en +0 -0
  20. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/98_fa +0 -0
  21. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/992_en +0 -0
  22. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/994_en +0 -0
  23. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/config +0 -0
  24. data/data/libphonenumber/java/demo/pom.xml +6 -6
  25. data/data/libphonenumber/java/geocoder/pom.xml +26 -4
  26. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1747_en +0 -0
  27. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1934_en +0 -0
  28. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/371_en +0 -0
  29. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/44_en +0 -0
  30. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/504_en +0 -0
  31. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_bg +0 -0
  32. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_ca +0 -0
  33. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_el +0 -0
  34. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_es +0 -0
  35. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_fi +0 -0
  36. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_hi +0 -0
  37. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_hu +0 -0
  38. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_iw +0 -0
  39. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_ja +0 -0
  40. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_tr +0 -0
  41. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/91_en +0 -0
  42. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/93_en +0 -0
  43. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/93_fa +0 -0
  44. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/98_en +0 -0
  45. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/98_fa +0 -0
  46. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/992_en +0 -0
  47. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/994_en +0 -0
  48. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/config +0 -0
  49. data/data/libphonenumber/java/internal/prefixmapper/pom.xml +25 -3
  50. data/data/libphonenumber/java/libphonenumber/pom.xml +23 -2
  51. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/MetadataLoader.java +2 -1
  52. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/MultiFileMetadataSourceImpl.java +63 -70
  53. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_595 +0 -0
  54. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AZ +0 -0
  55. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BD +0 -0
  56. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BG +0 -0
  57. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BH +0 -0
  58. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CI +0 -0
  59. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN +0 -0
  60. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HK +0 -0
  61. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HN +0 -0
  62. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IN +0 -0
  63. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KN +0 -0
  64. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KW +0 -0
  65. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LV +0 -0
  66. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PY +0 -0
  67. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SK +0 -0
  68. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SN +0 -0
  69. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TC +0 -0
  70. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TH +0 -0
  71. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TJ +0 -0
  72. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TZ +0 -0
  73. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_US +0 -0
  74. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AE +0 -0
  75. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AR +0 -0
  76. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BR +0 -0
  77. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GB +0 -0
  78. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IN +0 -0
  79. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NO +0 -0
  80. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SK +0 -0
  81. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ZA +0 -0
  82. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/SingleFilePhoneNumberMetadataProto +0 -0
  83. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/MultiFileMetadataSourceImplTest.java +25 -5
  84. data/data/libphonenumber/java/pom.xml +2 -2
  85. data/data/libphonenumber/java/release_notes.txt +45 -0
  86. data/data/libphonenumber/javascript/i18n/phonenumbers/demo-compiled.js +72 -70
  87. data/data/libphonenumber/javascript/i18n/phonenumbers/metadata.js +38 -32
  88. data/data/libphonenumber/javascript/i18n/phonenumbers/metadatalite.js +38 -32
  89. data/data/libphonenumber/resources/PhoneNumberAlternateFormats.xml +16 -0
  90. data/data/libphonenumber/resources/PhoneNumberMetadata.xml +232 -96
  91. data/data/libphonenumber/resources/ShortNumberMetadata.xml +188 -44
  92. data/data/libphonenumber/resources/carrier/en/255.txt +2 -0
  93. data/data/libphonenumber/resources/carrier/en/374.txt +3 -3
  94. data/data/libphonenumber/resources/carrier/en/421.txt +1 -0
  95. data/data/libphonenumber/resources/carrier/en/66.txt +1 -0
  96. data/data/libphonenumber/resources/carrier/en/91.txt +419 -253
  97. data/data/libphonenumber/resources/carrier/en/973.txt +1 -0
  98. data/data/libphonenumber/resources/carrier/en/992.txt +1 -0
  99. data/data/libphonenumber/resources/carrier/en/994.txt +3 -0
  100. data/data/libphonenumber/resources/carrier/fa/93.txt +24 -0
  101. data/data/libphonenumber/resources/carrier/fa/98.txt +30 -0
  102. data/data/libphonenumber/resources/carrier/ru/374.txt +28 -0
  103. data/data/libphonenumber/resources/geocoding/bg/82.txt +34 -0
  104. data/data/libphonenumber/resources/geocoding/ca/82.txt +34 -0
  105. data/data/libphonenumber/resources/geocoding/el/82.txt +28 -0
  106. data/data/libphonenumber/resources/geocoding/en/1.txt +2 -0
  107. data/data/libphonenumber/resources/geocoding/en/371.txt +3 -0
  108. data/data/libphonenumber/resources/geocoding/en/44.txt +19 -1
  109. data/data/libphonenumber/resources/geocoding/en/504.txt +19 -0
  110. data/data/libphonenumber/resources/geocoding/en/91.txt +1 -5
  111. data/data/libphonenumber/resources/geocoding/en/93.txt +52 -0
  112. data/data/libphonenumber/resources/geocoding/en/98.txt +0 -2
  113. data/data/libphonenumber/resources/geocoding/en/992.txt +77 -0
  114. data/data/libphonenumber/resources/geocoding/en/994.txt +98 -0
  115. data/data/libphonenumber/resources/geocoding/es/82.txt +33 -0
  116. data/data/libphonenumber/resources/geocoding/fa/93.txt +53 -0
  117. data/data/libphonenumber/resources/geocoding/fa/98.txt +0 -2
  118. data/data/libphonenumber/resources/geocoding/fi/82.txt +34 -0
  119. data/data/libphonenumber/resources/geocoding/hi/82.txt +36 -0
  120. data/data/libphonenumber/resources/geocoding/hu/82.txt +35 -0
  121. data/data/libphonenumber/resources/geocoding/iw/82.txt +37 -0
  122. data/data/libphonenumber/resources/geocoding/ja/82.txt +35 -0
  123. data/data/libphonenumber/resources/geocoding/tr/82.txt +35 -0
  124. data/data/libphonenumber/tools/java/common/pom.xml +2 -0
  125. data/data/libphonenumber/tools/java/cpp-build/pom.xml +4 -0
  126. data/data/libphonenumber/tools/java/data/pom.xml +1 -11
  127. data/data/libphonenumber/tools/java/java-build/pom.xml +2 -0
  128. data/data/phone_data.dat +0 -0
  129. data/lib/phonelib.rb +7 -6
  130. data/lib/phonelib/core.rb +116 -68
  131. data/lib/phonelib/data_importer.rb +23 -19
  132. data/lib/phonelib/data_importer_helper.rb +16 -16
  133. data/lib/phonelib/phone.rb +47 -137
  134. data/lib/phonelib/phone_analyzer.rb +27 -25
  135. data/lib/phonelib/phone_analyzer_helper.rb +16 -9
  136. data/lib/phonelib/phone_extended_data.rb +27 -17
  137. data/lib/phonelib/phone_formatter.rb +131 -0
  138. data/lib/phonelib/version.rb +2 -3
  139. data/lib/tasks/phonelib_tasks.rake +0 -2
  140. data/lib/validators/phone_validator.rb +24 -14
  141. metadata +42 -3
@@ -47,15 +47,12 @@
47
47
  <plugin>
48
48
  <groupId>org.apache.maven.plugins</groupId>
49
49
  <artifactId>maven-compiler-plugin</artifactId>
50
+ <version>2.0.2</version>
50
51
  <configuration>
51
52
  <source>1.6</source>
52
53
  <target>1.6</target>
53
54
  </configuration>
54
55
  </plugin>
55
- <plugin>
56
- <groupId>net.kindleit</groupId>
57
- <artifactId>maven-gae-plugin</artifactId>
58
- </plugin>
59
56
  <plugin>
60
57
  <groupId>org.apache.maven.plugins</groupId>
61
58
  <artifactId>maven-assembly-plugin</artifactId>
@@ -80,13 +77,6 @@
80
77
  </execution>
81
78
  </executions>
82
79
  </plugin>
83
- <plugin>
84
- <groupId>org.apache.maven.plugins</groupId>
85
- <artifactId>maven-war-plugin</artifactId>
86
- <configuration>
87
- <warSourceDirectory>webapp</warSourceDirectory>
88
- </configuration>
89
- </plugin>
90
80
  <plugin>
91
81
  <groupId>org.mortbay.jetty</groupId>
92
82
  <artifactId>maven-jetty-plugin</artifactId>
@@ -43,6 +43,7 @@
43
43
  <plugin>
44
44
  <groupId>org.apache.maven.plugins</groupId>
45
45
  <artifactId>maven-compiler-plugin</artifactId>
46
+ <version>2.0.2</version>
46
47
  <configuration>
47
48
  <source>1.5</source>
48
49
  <target>1.5</target>
@@ -51,6 +52,7 @@
51
52
  <plugin>
52
53
  <groupId>org.codehaus.mojo</groupId>
53
54
  <artifactId>build-helper-maven-plugin</artifactId>
55
+ <version>1.9.1</version>
54
56
  <executions>
55
57
  <execution>
56
58
  <id>add-source</id>
data/data/phone_data.dat CHANGED
Binary file
data/lib/phonelib.rb CHANGED
@@ -1,15 +1,16 @@
1
- # main module definition
1
+ # main Phonelib module definition
2
2
  module Phonelib
3
- # load gem classes
3
+ # load phonelib classes/modules
4
4
  autoload :Core, 'phonelib/core'
5
5
  autoload :Phone, 'phonelib/phone'
6
+ autoload :PhoneFormatter, 'phonelib/phone_formatter'
6
7
  autoload :PhoneAnalyzer, 'phonelib/phone_analyzer'
7
8
  autoload :PhoneAnalyzerHelper, 'phonelib/phone_analyzer_helper'
8
9
  autoload :PhoneExtendedData, 'phonelib/phone_extended_data'
9
10
 
10
- extend Module.new {
11
- include Core
12
- }
11
+ extend Core
13
12
  end
14
13
 
15
- autoload :PhoneValidator, 'validators/phone_validator' if defined?(ActiveModel) || defined?(Rails)
14
+ if defined?(ActiveModel) || defined?(Rails)
15
+ autoload :PhoneValidator, 'validators/phone_validator'
16
+ end
data/lib/phonelib/core.rb CHANGED
@@ -1,191 +1,222 @@
1
1
  module Phonelib
2
2
  # main module that includes all basic data and methods
3
3
  module Core
4
- # variable will include hash with data for validation
4
+ # @private variable will include hash with data for validation
5
5
  @@phone_data = nil
6
6
 
7
7
  # getter for phone data for other modules of gem, can be used outside
8
+ # @return [Hash] all data for phone parsing
8
9
  def phone_data
9
10
  @@phone_data ||= load_data.freeze
10
11
  end
11
12
 
12
- # used to cache frequently-used regular expressions
13
+ # @private used to cache frequently-used regular expressions
13
14
  @@phone_regexp_cache = {}
14
15
 
15
- # getter for phone regexp cache (internal use only)
16
+ # @private getter for phone regexp cache (internal use only)
16
17
  def phone_regexp_cache
17
18
  @@phone_regexp_cache
18
19
  end
19
20
 
20
- # variable for storing geo/carrier/timezone data
21
+ # @private variable for storing geo/carrier/timezone data
21
22
  @@phone_ext_data = nil
22
23
 
23
- # getter for extended phone data
24
+ # @private getter for extended phone data
24
25
  def phone_ext_data
25
26
  @@phone_ext_data ||= load_ext_data.freeze
26
27
  end
27
28
 
28
- # default country for parsing variable setting
29
+ # @private default country for parsing variable setting
29
30
  @@default_country = nil
30
31
 
31
32
  # getter method for default_country variable
33
+ # @return [String|nil] Default country set for parsing or nil
32
34
  def default_country
33
35
  @@default_country
34
36
  end
35
37
 
36
38
  # setter method for default_country variable
39
+ # @param country [String|Symbol] default country ISO2 code used for parsing
40
+ # @return [String|nil] Default country set for parsing or nil
37
41
  def default_country=(country)
38
42
  @@default_country = country
39
43
  end
40
44
 
41
- # extension separator
45
+ # @private extension separator
42
46
  @@extension_separator = ';'
43
47
 
44
48
  # getter method for extension_separator variable
49
+ # @return [String] Default extension separator used for formatting
45
50
  def extension_separator
46
51
  @@extension_separator
47
52
  end
48
53
 
49
54
  # setter method for extension_separator variable
55
+ # @param separator [String] extension separator used for formatting
56
+ # @return [String] Default extension separator used for formatting
50
57
  def extension_separator=(separator)
51
58
  @@extension_separator = separator
52
59
  end
53
60
 
54
- # extension separator symbols for parsing
61
+ # @private extension separator symbols for parsing
55
62
  @@extension_separate_symbols = '#;'
56
63
 
57
64
  # getter method for extension_separate_symbols variable
65
+ # @return [String] Default extension separator symbols used for parsing
58
66
  def extension_separate_symbols
59
67
  @@extension_separate_symbols
60
68
  end
61
69
 
62
70
  # setter method for extension_separate_symbols variable
71
+ # @param separator [String] extension separator symbols used for parsing
72
+ # @return [String] Default extension separator symbols used for parsing
63
73
  def extension_separate_symbols=(separator)
64
74
  @@extension_separate_symbols = separator
65
75
  end
66
76
 
67
- # flag identifies whether to use special phone types, like short code
77
+ # @private flag identifies whether to use special phone types, \
78
+ # like short code
68
79
  @@parse_special = false
69
80
 
70
81
  # getter for flag for special phone types parsing
82
+ # @return [Boolean] Flag defines whether to parse special phone types
71
83
  def parse_special
72
84
  @@parse_special
73
85
  end
74
86
 
75
87
  # setter for flag for special phone types parsing
88
+ # @param special [Boolean] parse special phone types value
89
+ # @return [Boolean] Flag defines whether to parse special phone types
76
90
  def parse_special=(special)
77
91
  @@parse_special = special
78
92
  end
79
93
 
80
- # strict check for validator, doesn't sanitize number
94
+ # @private strict check for validator, doesn't sanitize number
81
95
  @@strict_check = false
82
96
 
83
97
  # getter for strict check flag
98
+ # @return [Boolean] Flag defines whether to do strict parsing check
84
99
  def strict_check
85
100
  @@strict_check
86
101
  end
87
102
 
88
103
  # setter for strict check flag
104
+ # @param strict [Boolean] make a strict parsing or not
105
+ # @return [Boolean] Flag defines whether to do strict parsing check
89
106
  def strict_check=(strict)
90
107
  @@strict_check = strict
91
108
  end
92
109
 
93
110
  # gem constants definition
94
111
 
95
- # Main data file
112
+ # @private Main data file
96
113
  FILE_MAIN_DATA = 'data/phone_data.dat'
97
- # Extended data file
114
+ # @private Extended data file
98
115
  FILE_EXT_DATA = 'data/extended_data.dat'
99
116
 
100
117
  # constants for phone types
101
118
 
102
119
  # Validation patterns keys constants
103
- # General pattern for country key
120
+ # @private General pattern for country key
104
121
  GENERAL = :general_desc
105
- # Freephone line pattern key
122
+ # @private Freephone line pattern key
106
123
  PREMIUM_RATE = :premium_rate
107
- # Freephone line pattern key
124
+ # @private Freephone line pattern key
108
125
  TOLL_FREE = :toll_free
109
- # Shared cost pattern key. The cost of this call is shared between caller
110
- # and recipient, and is hence typically less than PREMIUM_RATE calls
126
+ # @private Shared cost pattern key. The cost of this call is shared
127
+ # between caller and recipient, and is hence typically less than
128
+ # PREMIUM_RATE calls
111
129
  SHARED_COST = :shared_cost
112
- # VoIP pattern key. This includes TSoIP (Telephony Service over IP)
130
+ # @private VoIP pattern key. This includes TSoIP (Telephony Service over IP)
113
131
  VOIP = :voip
114
- # A personal number is associated with a particular person, and may be
115
- # routed to either a MOBILE or FIXED_LINE number.
132
+ # @private A personal number is associated with a particular person,
133
+ # and may be routed to either a MOBILE or FIXED_LINE number.
116
134
  PERSONAL_NUMBER = :personal_number
117
- # Pager phone number pattern key
135
+ # @private Pager phone number pattern key
118
136
  PAGER = :pager
119
- # Used for 'Universal Access Numbers' or 'Company Numbers'. They may be
120
- # further routed to specific offices, but allow one number to be used for a
121
- # company.
137
+ # @private Used for 'Universal Access Numbers' or 'Company Numbers'.
138
+ # They may be further routed to specific offices, but allow one number
139
+ # to be used for a company.
122
140
  UAN = :uan
123
- # Used for 'Voice Mail Access Numbers'.
141
+ # @private Used for 'Voice Mail Access Numbers'.
124
142
  VOICEMAIL = :voicemail
125
- # Fixed line pattern key
143
+ # @private Fixed line pattern key
126
144
  FIXED_LINE = :fixed_line
127
- # Mobile phone number pattern key
145
+ # @private Mobile phone number pattern key
128
146
  MOBILE = :mobile
129
- # In case MOBILE and FIXED patterns are the same, this type is returned
147
+ # @private In case MOBILE and FIXED patterns are the same,
148
+ # this type is returned
130
149
  FIXED_OR_MOBILE = :fixed_or_mobile
131
- # Short code
150
+ # @private Short code
132
151
  SHORT_CODE = :short_code
133
- # emergency numbers
152
+ # @private emergency numbers
134
153
  EMERGENCY = :emergency
135
- # carrier specific type
154
+ # @private carrier specific type
136
155
  CARRIER_SPECIFIC = :carrier_specific
137
- # SMS Services only type
156
+ # @private SMS Services only type
138
157
  SMS_SERVICES = :sms_services
139
- # expendad emergency type
158
+ # @private expendad emergency type
140
159
  EXPANDED_EMERGENCY = :expanded_emergency
141
- # no international dialling type
160
+ # @private no international dialling type
142
161
  NO_INTERNATIONAL_DIALING = :no_international_dialling
143
- # carrier services type
162
+ # @private carrier services type
144
163
  CARRIER_SERVICES = :carrier_services
145
- # directory services
164
+ # @private directory services
146
165
  DIRECTORY_SERVICES = :directory_services
147
- # standard rate type
166
+ # @private standard rate type
148
167
  STANDARD_RATE = :standard_rate
149
- # carrier selection codes
168
+ # @private carrier selection codes
150
169
  CARRIER_SELECTION_CODES = :carrier_selection_codes
151
- # area code optional type
170
+ # @private area code optional type
152
171
  AREA_CODE_OPTIONAL = :area_code_optional
153
172
 
154
173
  # Internal use keys for validations
155
- # Valid regex pattern key
174
+ # @private Valid regex pattern key
156
175
  VALID_PATTERN = :national_number_pattern
157
- # Possible regex pattern key
176
+ # @private Possible regex pattern key
158
177
  POSSIBLE_PATTERN = :possible_number_pattern
159
- # National prefix key
178
+ # @private National prefix key
160
179
  NATIONAL_PREFIX = :national_prefix
161
- # National prefix for parsing key
180
+ # @private National prefix for parsing key
162
181
  NATIONAL_PREFIX_FOR_PARSING = :national_prefix_for_parsing
163
- # National prefix rule key
182
+ # @private National prefix rule key
164
183
  NATIONAL_PREFIX_RULE = :national_prefix_formatting_rule
165
- # Country code key
184
+ # @private Country code key
166
185
  COUNTRY_CODE = :country_code
167
- # Leading digits key
186
+ # @private Leading digits key
168
187
  LEADING_DIGITS = :leading_digits
169
- # International prefix key
188
+ # @private International prefix key
170
189
  INTERNATIONAL_PREFIX = :international_prefix
171
- # Main country for code key
190
+ # @private Main country for code key
172
191
  MAIN_COUNTRY_FOR_CODE = :main_country_for_code
173
- # Double country prefix flag key
192
+ # @private Double country prefix flag key
174
193
  DOUBLE_COUNTRY_PREFIX_FLAG = :double_prefix
175
- # Types key
194
+ # @private Types key
176
195
  TYPES = :types
177
- # Formats key
196
+ # @private Formats key
178
197
  FORMATS = :formats
179
- # Pattern key
198
+ # @private Pattern key
180
199
  PATTERN = :pattern
181
200
 
182
- # Default number formatting data hash
201
+ # @private Area code possible types
202
+ AREA_CODE_TYPES = [FIXED_LINE, FIXED_OR_MOBILE, MOBILE]
203
+
204
+ # @private Area code countries for mobile type
205
+ AREA_CODE_MOBILE_COUNTRIES = %w(AR MX BR)
206
+
207
+ # @private Area code mobile phone token
208
+ AREA_CODE_MOBILE_TOKENS = {
209
+ 'MX' => '1',
210
+ 'AR' => '9'
211
+ }
212
+
213
+ # @private Default number formatting data hash
183
214
  DEFAULT_NUMBER_FORMAT = {
184
215
  pattern: '(\\d+)(\\d{3})(\\d{4})',
185
216
  format: '$1 $2 $3'
186
217
  }
187
218
 
188
- # hash of all phone types with human representation
219
+ # @private hash of all phone types with human representation
189
220
  TYPES_DESC = {
190
221
  general_desc: 'General Pattern',
191
222
  premium_rate: 'Premium Rate',
@@ -212,74 +243,91 @@ module Phonelib
212
243
  area_code_optional: 'Are code optional'
213
244
  }
214
245
 
215
- # short codes types keys
246
+ # @private short codes types keys
216
247
  SHORT_CODES = [
217
- :short_code, :emergency, :carrier_specific, :sms_services,
218
- :expanded_emergency, :no_international_dialling, :carrier_services,
219
- :directory_services, :standard_rate, :carrier_selection_codes,
220
- :area_code_optional
248
+ :short_code, :emergency, :carrier_specific, :sms_services,
249
+ :expanded_emergency, :no_international_dialling, :carrier_services,
250
+ :directory_services, :standard_rate, :carrier_selection_codes,
251
+ :area_code_optional
221
252
  ]
222
253
 
223
- # Extended data prefixes hash key
254
+ # @private Extended data prefixes hash key
224
255
  EXT_PREFIXES = :prefixes
225
- # Extended data geo names array key
256
+ # @private Extended data geo names array key
226
257
  EXT_GEO_NAMES = :geo_names
227
- # Extended data timezones array key
258
+ # @private Extended data timezones array key
228
259
  EXT_TIMEZONES = :timezones
229
- # Extended data carriers array key
260
+ # @private Extended data carriers array key
230
261
  EXT_CARRIERS = :carriers
231
- # Extended data key for geoname in prefixes hash
262
+ # @private Extended data key for geoname in prefixes hash
232
263
  EXT_GEO_NAME_KEY = :g
233
- # Extended data key for timezone in prefixes hash
264
+ # @private Extended data key for timezone in prefixes hash
234
265
  EXT_TIMEZONE_KEY = :t
235
- # Extended data key for carrier in prefixes hash
266
+ # @private Extended data key for carrier in prefixes hash
236
267
  EXT_CARRIER_KEY = :c
237
268
 
238
269
  # method for parsing phone number.
239
270
  # On first run fills @@phone_data with data present in yaml file
271
+ # @param phone [String] the phone number to be parsed
272
+ # @param passed_country [nil|String|Symbol] country for phone parsing
273
+ # @return [Phonelib::Phone] parsed phone entity
240
274
  def parse(phone, passed_country = nil)
241
275
  Phonelib::Phone.new phone, passed_country
242
276
  end
243
277
 
244
278
  # method checks if passed phone number is valid
279
+ # @param phone_number [String] the phone number to be parsed
280
+ # @return [Boolean] phone valid or not
245
281
  def valid?(phone_number)
246
282
  parse(phone_number).valid?
247
283
  end
248
284
 
249
285
  # method checks if passed phone number is invalid
286
+ # @param phone_number [String] the phone number to be parsed
287
+ # @return [Boolean] phone invalid or not
250
288
  def invalid?(phone_number)
251
289
  parse(phone_number).invalid?
252
290
  end
253
291
 
254
292
  # method checks if passed phone number is possible
293
+ # @param phone_number [String] the phone number to be parsed
294
+ # @return [Boolean] phone possible or not
255
295
  def possible?(phone_number)
256
296
  parse(phone_number).possible?
257
297
  end
258
298
 
259
299
  # method checks if passed phone number is impossible
300
+ # @param phone_number [String] the phone number to be parsed
301
+ # @return [Boolean] phone impossible or not
260
302
  def impossible?(phone_number)
261
303
  parse(phone_number).impossible?
262
304
  end
263
305
 
264
306
  # method checks if passed phone number is valid for provided country
307
+ # @param phone_number [String] the phone number to be parsed
308
+ # @param country [String] ISO2 country code for phone parsing
309
+ # @return [Boolean] phone valid for specified country or not
265
310
  def valid_for_country?(phone_number, country)
266
311
  parse(phone_number, country).valid_for_country?(country)
267
312
  end
268
313
 
269
314
  # method checks if passed phone number is invalid for provided country
315
+ # @param phone_number [String] the phone number to be parsed
316
+ # @param country [String] ISO2 country code for phone parsing
317
+ # @return [Boolean] phone invalid for specified country or not
270
318
  def invalid_for_country?(phone_number, country)
271
319
  parse(phone_number, country).invalid_for_country?(country)
272
320
  end
273
321
 
274
322
  private
275
323
 
276
- # Load data file into memory
324
+ # @private Load data file into memory
277
325
  def load_data
278
326
  data_file = "#{File.dirname(__FILE__)}/../../#{FILE_MAIN_DATA}"
279
327
  Marshal.load(File.binread(data_file))
280
328
  end
281
329
 
282
- # Load extended data file into memory
330
+ # @private Load extended data file into memory
283
331
  def load_ext_data
284
332
  data_file = "#{File.dirname(__FILE__)}/../../#{FILE_EXT_DATA}"
285
333
  Marshal.load(File.binread(data_file))