phonelib 0.6.8 → 0.6.9

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
  SHA1:
3
- metadata.gz: 52dfab24f832cd68c1737ac9eb6add1bebca27bb
4
- data.tar.gz: 1fdd018fcbfd3edbfb5266a98f0828fd0397ef3b
3
+ metadata.gz: 057bf64ada014da3a08f3355708b52ff368ecbba
4
+ data.tar.gz: 58f4e1fd554667c03f827fc73b45fdcb91c38cfe
5
5
  SHA512:
6
- metadata.gz: ebeadc2bb517ed0590f130cbaf00182283f43a8adb52d7d4439b4004ba9718593de2dc795991d39a2f1afa8ddb1add278d280adcb4b5f2ced14efb6e8ad35418
7
- data.tar.gz: 31a6365ed3d5acbb62f496c10c54745f81f39cb6836f67c344117552039c0253e02d61b4d81c1aefe22b052b026f5f5f3e6331f81ac829387f880ae3bbb4b910
6
+ metadata.gz: e7dc5128f57dd6d743d32ea86ae5de72cf3ac539d19a3bafa7fc8d33153520d7382d786286e417be9b4fb31f0cf69b9e5baa4c353de51d68754397862db28bb5
7
+ data.tar.gz: 4abda9ec008548813bd838137a4f9139345f57f2e794f296f218db0d48263c14874446aac396f1d264e5f864a35294a22aa6b2b6d8b619d5652f0237eb167caa
data/README.md CHANGED
@@ -1,5 +1,6 @@
1
1
  ## Phonelib
2
2
 
3
+ [![Built in integration with JetBrains RubyMine](https://github.com/daddyz/phonelib/blob/master/icon_RubyMine.png?raw=true)](https://www.jetbrains.com/ruby/)
3
4
  [![Gem Version](https://badge.fury.io/rb/phonelib.svg)](http://badge.fury.io/rb/phonelib)
4
5
  [![Build Status](https://travis-ci.org/daddyz/phonelib.png?branch=master)](http://travis-ci.org/daddyz/phonelib)
5
6
  [![](https://codeclimate.com/github/daddyz/phonelib/badges/coverage.svg)](https://codeclimate.com/github/daddyz/phonelib/coverage)
@@ -67,6 +68,12 @@ To set symbols that are used for separating extension from phone number for pars
67
68
  Phonelib.extension_separate_symbols = '#;'
68
69
  ```
69
70
 
71
+ In case you need to overwrite some Google's libphonenumber library data, you need to assign file path to this setter. File should be Marshal.dump'ed with existing structure like in ```Phonelib.phone_data```. Gem is simply doing ```merge``` between hashes.
72
+
73
+ ``` ruby
74
+ Phonelib.override_phone_data = '/path/to/override_phone_data.dat'
75
+ ```
76
+
70
77
  In case phone number that was passed for parsing has "+" sign in the beginning, library will try to detect a country regarding the provided one.
71
78
 
72
79
  ### ActiveRecord Integration
@@ -84,7 +91,7 @@ Please note that passing blank value also fails.
84
91
  Additional options:
85
92
 
86
93
  ``` ruby
87
- validates :attribute, phone: { possible: true, allow_blank: true, types: [:voip, :mobile] }
94
+ validates :attribute, phone: { possible: true, allow_blank: true, types: [:voip, :mobile], country_specifier: -> phone { phone.country.try(:upcase) } }
88
95
  ```
89
96
 
90
97
  <tt>possible: true</tt> - enables validation to check whether the passed number is a possible phone number (not strict check).
@@ -95,6 +102,8 @@ Refer to [Google libphonenumber](http://code.google.com/p/libphonenumber/) for m
95
102
  <tt>types: :mobile</tt> or <tt>types: [:voip, :mobile]</tt> - allows to validate against specific phone types patterns,
96
103
  if mixed with <tt>possible</tt> will check if number is possible for specified type
97
104
 
105
+ <tt>country_specifier: -> phone { phone.country.try(:upcase) }</tt> - allows to specify country for validation dynamically for each validation.
106
+
98
107
  ### Basic usage
99
108
 
100
109
  To check if phone number is valid simply run:
Binary file
Binary file
@@ -107,6 +107,16 @@ module Phonelib
107
107
  @@strict_check = strict
108
108
  end
109
109
 
110
+ @@override_phone_data = nil
111
+ # setter for data file to use
112
+ def override_phone_data=(file_path)
113
+ @@override_phone_data = file_path
114
+ end
115
+
116
+ def override_phone_data
117
+ @@override_phone_data
118
+ end
119
+
110
120
  # gem constants definition
111
121
 
112
122
  # @private Main data file
@@ -324,7 +334,12 @@ module Phonelib
324
334
  # @private Load data file into memory
325
335
  def load_data
326
336
  data_file = "#{File.dirname(__FILE__)}/../../#{FILE_MAIN_DATA}"
327
- Marshal.load(File.binread(data_file))
337
+ default_data = Marshal.load(File.binread(data_file))
338
+ if override_phone_data
339
+ override_data_file = Marshal.load(File.binread(override_phone_data))
340
+ default_data.merge!(override_data_file)
341
+ end
342
+ default_data
328
343
  end
329
344
 
330
345
  # @private Load extended data file into memory
@@ -55,10 +55,10 @@ module Phonelib
55
55
  def parse_raw_file(file)
56
56
  data = {}
57
57
  File.readlines(file).each do |line|
58
- line = str_clean line
58
+ line = str_clean line, false
59
59
  next if line.empty? || line[0] == '#'
60
60
  prefix, line_data = line.split('|')
61
- data[prefix] = line_data && line_data.split('&')
61
+ data[prefix] = line_data && line_data.strip.split('&')
62
62
  end
63
63
  data
64
64
  end
@@ -124,7 +124,7 @@ module Phonelib
124
124
 
125
125
  # @private Get needable data for formatting phone as national number
126
126
  def formatting_data
127
- return @formatting_data if @formatting_data
127
+ return @formatting_data if defined?(@formatting_data)
128
128
 
129
129
  format = @data[country][:format]
130
130
  prefix = @data[country][Core::NATIONAL_PREFIX]
@@ -1,4 +1,4 @@
1
1
  module Phonelib
2
2
  # @private
3
- VERSION = '0.6.8'
3
+ VERSION = '0.6.9'
4
4
  end
@@ -43,8 +43,9 @@ class PhoneValidator < ActiveModel::EachValidator
43
43
  # Validation method
44
44
  def validate_each(record, attribute, value)
45
45
  return if options[:allow_blank] && value.blank?
46
+ country = options[:country_specifier].call(record) if options[:country_specifier]
46
47
 
47
- phone = parse(value)
48
+ phone = parse(value, country)
48
49
  valid = if simple_validation?
49
50
  method = options[:possible] ? :possible? : :valid?
50
51
  phone.send(method)
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phonelib
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.8
4
+ version: 0.6.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vadim Senderovich
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-28 00:00:00.000000000 Z
11
+ date: 2017-01-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "<"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '11.0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "<"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '11.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: nokogiri
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +108,20 @@ dependencies:
108
108
  - - '='
109
109
  - !ruby/object:Gem::Version
110
110
  version: '1.2'
111
+ - !ruby/object:Gem::Dependency
112
+ name: json
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '='
116
+ - !ruby/object:Gem::Version
117
+ version: 1.8.6
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '='
123
+ - !ruby/object:Gem::Version
124
+ version: 1.8.6
111
125
  description: |2
112
126
  Google libphonenumber library was taken as a basis for
113
127
  this gem. Gem uses its data file for validations and number formatting.