phonelib 0.6.2 → 0.6.3

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.
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))