phonelib 0.6.58 → 0.7.0

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: 1cfc6e3a60c622177adbc8caf40673faebc7a4919c766d021a199ec52372a385
4
- data.tar.gz: 759d7b9dfa7807dcf33a3b19fc6e3a8d5cb98febe1f9458dced2f7d8a96a40f6
3
+ metadata.gz: d9a96a615d554195979c6dc886188eb4f8638e89f616fb5ce5aa6cb74ee91ca0
4
+ data.tar.gz: e8b51d76743373fd9e2913eb5eddcea65e35e57673f29e47a361398dab662a16
5
5
  SHA512:
6
- metadata.gz: a56a4ad205176638db2a08bb79c8366df4a0d839f971e7b8b38162c2089ad98671602e6a4f128510de78cf4e9fc73762af60e940fe7dcd8b8b9bd00d52f2186e
7
- data.tar.gz: b5be23901e6786c28dfa16cd83130256e88a2323dacc7f9b45c5f6baa342b9a379076af3d1a4629b1b4a33b63c5ae11dd91943374b5daa67f85c20ed40704dd7
6
+ metadata.gz: 7710f2ab513e1bb53bb6bec2fe78de93fa742c18c85f2393f05ebf862cd245c7b3b01a4055403af287c4e225a58c26fd03507f0f08bf9e4d1468ad1279623ecd
7
+ data.tar.gz: e44959fbc033b27ac6b2974941c2ce010ba788bf371a4048a45c7d3dba78bb982b08c9201019b4bd2f958b139e46f7f29dcf0c0ae6c406a94d21490129df68de
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![Built in integration with JetBrains RubyMine](https://github.com/daddyz/phonelib/blob/master/icon_RubyMine.png?raw=true)](https://www.jetbrains.com/ruby/)
4
4
  [![Gem Version](https://badge.fury.io/rb/phonelib.svg)](http://badge.fury.io/rb/phonelib)
5
- [![Build Status](https://travis-ci.com/daddyz/phonelib.svg?branch=master)](http://travis-ci.com/daddyz/phonelib)
5
+ [![CircleCI](https://circleci.com/gh/daddyz/phonelib/tree/master.svg?style=shield)](https://circleci.com/gh/daddyz/phonelib/tree/master)
6
6
  [![](https://codeclimate.com/github/daddyz/phonelib/badges/coverage.svg)](https://codeclimate.com/github/daddyz/phonelib/coverage)
7
7
  [![](https://codeclimate.com/github/daddyz/phonelib/badges/gpa.svg)](https://codeclimate.com/github/daddyz/phonelib)
8
8
  [![Inline docs](http://inch-ci.org/github/daddyz/phonelib.svg?branch=master)](http://inch-ci.org/github/daddyz/phonelib)
@@ -11,6 +11,11 @@ Phonelib is a gem allowing you to validate phone number. All validations are bas
11
11
  Currently it can make basic validations and formatting to e164 international number format and national number format with prefix.
12
12
  But it still doesn't include all Google's library functionality.
13
13
 
14
+ ## Incorrect parsing or validation
15
+
16
+ In case your phone number is incorrectly parsed, you can check original libphonenumber for result [here](https://rawgit.com/googlei18n/libphonenumber/master/javascript/i18n/phonenumbers/demo-compiled.html) and in case of same parse result [open an issue for them](https://issuetracker.google.com/issues/new?component=192347&template=829703). This gem's data is based on it.
17
+ If you can't wait for libphonenumber to resolve the issue, try to use ```Phonelib.add_additional_regex``` and ```Phonelib.additional_regexes``` methods.
18
+
14
19
  ## Information
15
20
 
16
21
  ### Change Log
Binary file
data/data/phone_data.dat CHANGED
Binary file
@@ -16,8 +16,31 @@ module Phonelib
16
16
  # * +passed_country+ - Country provided for parsing. Must be ISO code of
17
17
  # country (2 letters) like 'US', 'us' or :us for United States
18
18
  def analyze(phone, passed_country)
19
- country = country_or_default_country passed_country
19
+ countries = country_or_default_country passed_country
20
20
 
21
+ return analyze_single_country(phone, countries.first, passed_country) if countries.size == 1
22
+
23
+ results = {}
24
+ countries.map do |country|
25
+ results.merge! analyze_single_country(phone, country, passed_country)
26
+ end
27
+
28
+ pick_results(results)
29
+ end
30
+
31
+ private
32
+
33
+ # pick best result when several countries specified
34
+ def pick_results(results)
35
+ [:valid, :possible].each do |key|
36
+ final = results.select { |_k, v| v[key].any? }
37
+ return decorate_analyze_result(final) if final.size > 0
38
+ end
39
+
40
+ decorate_analyze_result(results)
41
+ end
42
+
43
+ def analyze_single_country(phone, country, passed_country)
21
44
  result = parse_country(phone, country)
22
45
  d_result = case
23
46
  when result && result.values.find { |e| e[:valid].any? }
@@ -32,8 +55,6 @@ module Phonelib
32
55
  better_result(result, d_result)
33
56
  end
34
57
 
35
- private
36
-
37
58
  # method checks which result is better to return
38
59
  def better_result(base_result, result = nil)
39
60
  base_result ||= {}
@@ -3,6 +3,14 @@ module Phonelib
3
3
  module PhoneAnalyzerHelper
4
4
  private
5
5
 
6
+ def decorate_analyze_result(result)
7
+ if result.size == 1
8
+ result
9
+ else
10
+ Hash[result.take(1)]
11
+ end
12
+ end
13
+
6
14
  def original_starts_with_plus?
7
15
  original_s[0] == Core::PLUS_SIGN
8
16
  end
@@ -90,7 +98,11 @@ module Phonelib
90
98
  # * +country+ - country passed for parsing
91
99
  def country_or_default_country(country)
92
100
  country ||= (original_starts_with_plus? ? nil : Phonelib.default_country)
93
- country && country.to_s.upcase
101
+ if country.is_a?(Array)
102
+ country.compact.map { |e| e.to_s.upcase }
103
+ else
104
+ [country && country.to_s.upcase]
105
+ end
94
106
  end
95
107
 
96
108
  # constructs full regex for phone validation for provided phone data
@@ -1,4 +1,4 @@
1
1
  module Phonelib
2
2
  # @private
3
- VERSION = '0.6.58'
3
+ VERSION = '0.7.0'
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phonelib
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.58
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vadim Senderovich
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-04 00:00:00.000000000 Z
11
+ date: 2022-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake