mini_phone 1.0.4 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ec6635c4a695331ec847d69f21e79578f5f9ebdddf2752a7f1074fabd33ccfac
4
- data.tar.gz: 51aae23c0a2330a9599ee0336ad591e8fa4548c041b0a6aa1710f5834791b5f7
3
+ metadata.gz: e442f98e547a4059112a40d4a28d79b7438ded4ec9d697ed7a59e03447e073f3
4
+ data.tar.gz: b7ff1d3b6c32564197471098acb0654f214a035df703382500a5c7c825b80d9f
5
5
  SHA512:
6
- metadata.gz: 19540acad836a3102e52aab746c530c8f78613e4d3ac98ba3844c24e156d1a994aa92c5dcfaa3fd831ffe7d0a8ba26aa036a8e23f982545a81a08fac2e0cab6c
7
- data.tar.gz: 747484c1f84802be42523c762f213eaa5044257d78546ac8a30c554c101053d6764e264c892fe29df74f265b44afa7829172a697f23996d1443835203266705b
6
+ metadata.gz: 90e2db831e7edf8ccbe083f3daad5830d8d65d6945598441a4b7bc38c0b191d5aec85c7356b9549375add822e3e6b8d27d550ed647d1721d29fb4113e50e6fc3
7
+ data.tar.gz: adc1643314e3f781e9c427ff6540ba406995c14e9429fa4c520b681375459a73711fa1cbf8072c51c7f2b79f781a44fd81d219e79c6388e0d6c25f3e56e0e781
data/README.md CHANGED
@@ -1,9 +1,9 @@
1
1
  # MiniPhone
2
2
 
3
- A Ruby gem which plugs directly in the the Google's native C++
4
- [libphonenumber](https://github.com/google/libphonenumber) for extemely
3
+ A Ruby gem which plugs directly into Google's native C++
4
+ [libphonenumber](https://github.com/google/libphonenumber) for extremely
5
5
  _fast_ and _robust_ phone number parsing, validation, and formatting. On
6
- average, most methods are 40x t0 50x faster than other Ruby phone number
6
+ average, most methods are 40x to 50x faster than other Ruby phone number
7
7
  libraries.
8
8
 
9
9
  ## Usage
@@ -23,10 +23,12 @@ MiniPhone.default_country = 'US'
23
23
 
24
24
  phone_number = MiniPhone.parse('404-384-1399')
25
25
 
26
- phone_number.e164 # +14043841399
27
- phone_number.national # (404) 384-1399
28
- phone_number.international # +1 404-384-1399
29
- phone_number.rfc3966 # tel:+1-404-384-1384
26
+ phone_number.e164 # +14043841399
27
+ phone_number.national # (404) 384-1399
28
+ phone_number.raw_national # 4043841399
29
+ phone_number.dasherized_national # 404-384-1399
30
+ phone_number.international # +1 404-384-1399
31
+ phone_number.rfc3966 # tel:+1-404-384-1384
30
32
  ```
31
33
 
32
34
  ### Checking if a phone number is possible
@@ -41,7 +43,7 @@ phone_number.possible? # false
41
43
 
42
44
  ```ruby
43
45
  MiniPhone.parse('+12423570000').type # :mobile
44
- MiniPhone.parse['+12423651234').type # :fixed_line
46
+ MiniPhone.parse('+12423651234').type # :fixed_line
45
47
  ```
46
48
 
47
49
  The possible types are directly mapped from [this
@@ -65,14 +67,14 @@ enum](https://github.com/google/libphonenumber/blob/4e9954edea7cf263532c5dd3861a
65
67
  ## Compatibility with PhoneLib
66
68
 
67
69
  MiniPhone aims to be compatible with
68
- [Phonelib](https://github.com/daddyz/phonelib) so in many cases it can be a
69
- drop in replacement. It has a smaller feature set, so if you need it it not a
70
- drop in replacement for every use case. If there is a feature you need, open
70
+ [Phonelib](https://github.com/daddyz/phonelib). In many cases it can be a
71
+ drop in replacement. It has a smaller feature set, so it is not a
72
+ replacement for every use case. If there is a feature you need, open
71
73
  an issue and we will try to support it.
72
74
 
73
75
  ## Benchmarks
74
76
 
75
- On average, most methods are 40x t0 50x faster than other libraries. To run
77
+ On average, most methods are 40x to 50x faster than other libraries. To run
76
78
  the benchmarks locally, execute: `bundle exec rake bench`
77
79
 
78
80
  ```
@@ -132,10 +134,10 @@ push git commits and tags, and push the `.gem` file to
132
134
  ## Contributing
133
135
 
134
136
  Bug reports and pull requests are welcome on GitHub at
135
- https://github.com/[USERNAME]/mini_phone. This project is intended to be a
137
+ https://github.com/ianks/mini_phone. This project is intended to be a
136
138
  safe, welcoming space for collaboration, and contributors are expected to
137
139
  adhere to the [code of
138
- conduct](https://github.com/[USERNAME]/mini_phone/blob/master/CODE_OF_CONDUCT.md).
140
+ conduct](https://github.com/ianks/mini_phone/blob/master/CODE_OF_CONDUCT.md).
139
141
 
140
142
  ## License
141
143
 
@@ -146,4 +148,4 @@ License](https://opensource.org/licenses/MIT).
146
148
 
147
149
  Everyone interacting in the MiniPhone project's codebases, issue trackers,
148
150
  chat rooms and mailing lists is expected to follow the [code of
149
- conduct](https://github.com/[USERNAME]/mini_phone/blob/master/CODE_OF_CONDUCT.md).
151
+ conduct](https://github.com/ianks/mini_phone/blob/master/CODE_OF_CONDUCT.md).
@@ -12,6 +12,7 @@ static VALUE rb_mMiniPhone;
12
12
  static VALUE rb_cPhoneNumber;
13
13
 
14
14
  static RepeatedPtrField<NumberFormat> raw_national_format;
15
+ static RepeatedPtrField<NumberFormat> dasherized_national_format;
15
16
 
16
17
  extern "C" struct PhoneNumberInfo {
17
18
  PhoneNumber phone_number;
@@ -122,6 +123,7 @@ extern "C" VALUE rb_phone_number_alloc(VALUE self) {
122
123
  static inline VALUE rb_phone_number_nullify_ivars(VALUE self) {
123
124
  rb_iv_set(self, "@national", Qnil);
124
125
  rb_iv_set(self, "@raw_national", Qnil);
126
+ rb_iv_set(self, "@dasherized_national", Qnil);
125
127
  rb_iv_set(self, "@international", Qnil);
126
128
  rb_iv_set(self, "@e164", Qnil);
127
129
  rb_iv_set(self, "@country_code", Qnil);
@@ -219,24 +221,37 @@ extern "C" VALUE rb_phone_number_rfc3966(VALUE self) {
219
221
  return rb_iv_set(self, "@rfc3966", rb_phone_number_format(self, PhoneNumberUtil::PhoneNumberFormat::RFC3966));
220
222
  }
221
223
 
222
- extern "C" VALUE rb_phone_number_raw_national(VALUE self) {
223
- if (rb_ivar_defined(self, rb_intern("@raw_national"))) {
224
- return rb_iv_get(self, "@raw_national");
225
- }
226
-
224
+ VALUE format_by_pattern_national(VALUE self, RepeatedPtrField<NumberFormat> format) {
227
225
  std::string formatted_number;
228
226
  PhoneNumberInfo *phone_number_info;
229
227
  const PhoneNumberUtil &phone_util(*PhoneNumberUtil::GetInstance());
230
228
  Data_Get_Struct(self, PhoneNumberInfo, phone_number_info);
231
229
 
232
- phone_util.FormatByPattern(phone_number_info->phone_number, PhoneNumberUtil::NATIONAL, raw_national_format,
233
- &formatted_number);
230
+ phone_util.FormatByPattern(phone_number_info->phone_number, PhoneNumberUtil::NATIONAL, format, &formatted_number);
231
+
232
+ return rb_str_new(formatted_number.c_str(), formatted_number.size());
233
+ }
234
234
 
235
- VALUE result = rb_str_new(formatted_number.c_str(), formatted_number.size());
235
+ extern "C" VALUE rb_phone_number_raw_national(VALUE self) {
236
+ if (rb_ivar_defined(self, rb_intern("@raw_national"))) {
237
+ return rb_iv_get(self, "@raw_national");
238
+ }
239
+
240
+ VALUE result = format_by_pattern_national(self, raw_national_format);
236
241
 
237
242
  return rb_iv_set(self, "@raw_national", result);
238
243
  }
239
244
 
245
+ extern "C" VALUE rb_phone_number_dasherized_national(VALUE self) {
246
+ if (rb_ivar_defined(self, rb_intern("@dasherized_national"))) {
247
+ return rb_iv_get(self, "@dasherized_national");
248
+ }
249
+
250
+ VALUE result = format_by_pattern_national(self, dasherized_national_format);
251
+
252
+ return rb_iv_set(self, "@dasherized_national", result);
253
+ }
254
+
240
255
  extern "C" VALUE rb_phone_number_valid_eh(VALUE self) {
241
256
  if (rb_ivar_defined(self, rb_intern("@valid"))) {
242
257
  return rb_iv_get(self, "@valid");
@@ -416,7 +431,21 @@ extern "C" VALUE rb_phone_number_area_code(VALUE self) {
416
431
  return rb_iv_set(self, "@area_code", result);
417
432
  }
418
433
 
434
+ static inline void setup_formats() {
435
+ // Raw
436
+ NumberFormat *raw_fmt = raw_national_format.Add();
437
+ raw_fmt->set_pattern("(\\d{3})(\\d{3})(\\d{4})");
438
+ raw_fmt->set_format("$1$2$3");
439
+
440
+ // Dasherized
441
+ NumberFormat *dsh_fmt = dasherized_national_format.Add();
442
+ dsh_fmt->set_pattern("(\\d{3})(\\d{3})(\\d{4})");
443
+ dsh_fmt->set_format("$1-$2-$3");
444
+ }
445
+
419
446
  extern "C" void Init_mini_phone(void) {
447
+ setup_formats();
448
+
420
449
  rb_mMiniPhone = rb_define_module("MiniPhone");
421
450
 
422
451
  // Unknown
@@ -451,10 +480,9 @@ extern "C" void Init_mini_phone(void) {
451
480
  rb_define_method(rb_cPhoneNumber, "e164", reinterpret_cast<VALUE (*)(...)>(rb_phone_number_e164), 0);
452
481
  rb_define_method(rb_cPhoneNumber, "national", reinterpret_cast<VALUE (*)(...)>(rb_phone_number_national), 0);
453
482
 
454
- // Raw National
455
- raw_national_format.Add()->set_format("$1$2$3");
456
-
457
483
  rb_define_method(rb_cPhoneNumber, "raw_national", reinterpret_cast<VALUE (*)(...)>(rb_phone_number_raw_national), 0);
484
+ rb_define_method(rb_cPhoneNumber, "dasherized_national",
485
+ reinterpret_cast<VALUE (*)(...)>(rb_phone_number_dasherized_national), 0);
458
486
  rb_define_method(rb_cPhoneNumber, "international", reinterpret_cast<VALUE (*)(...)>(rb_phone_number_international),
459
487
  0);
460
488
  rb_define_method(rb_cPhoneNumber, "rfc3966", reinterpret_cast<VALUE (*)(...)>(rb_phone_number_rfc3966), 0);
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MiniPhone
4
- VERSION = '1.0.4'
4
+ VERSION = '1.0.5'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mini_phone
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ian Ker-Seymer
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-01-08 00:00:00.000000000 Z
11
+ date: 2021-01-11 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Plugs directly in the the Google's native C++ [libphonenumber](https://github.com/google/libphonenumber)
14
14
  for extemely _fast_ and _robust_ phone number parsing, validation, and formatting.