gphone 0.1.0 → 0.2.0

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.
data/Gemfile CHANGED
@@ -1,18 +1,14 @@
1
1
  source "http://rubygems.org"
2
- # Add dependencies required to use your gem here.
3
- # Example:
4
- # gem "activesupport", ">= 2.3.5"
5
2
 
3
+ gemspec
6
4
  gem 'rice'
7
5
 
8
- # Add dependencies to develop your gem here.
9
- # Include everything needed to run rake, tests, features, etc.
10
-
11
6
  group :test do
12
7
  gem 'rake-compiler'
13
8
  end
14
9
 
15
10
  group :development do
11
+ gem "ruby-debug19"
16
12
  gem "rspec", "~> 2.8.0"
17
13
  gem "rdoc", "~> 3.12"
18
14
  gem "bundler", ">= 1.0.0"
data/README.md CHANGED
@@ -1,7 +1,8 @@
1
1
  gphone
2
2
  ======
3
3
 
4
- Ruby bindings to Google's libphonenumber. With gphone you can parse,
4
+ Ruby bindings to Google's libphonenumber
5
+ (http://code.google.com/p/libphonenumber/). With gphone you can parse,
5
6
  validate and normalize and format phone numbers and determine their
6
7
  type. So far this library offers only very basic coverage of the
7
8
  features the C++ library offers.
@@ -9,6 +10,8 @@ features the C++ library offers.
9
10
  Usage
10
11
  -----
11
12
 
13
+ **GPhone**
14
+
12
15
  ```ruby
13
16
  require 'gphone'
14
17
 
@@ -28,8 +31,45 @@ ph.format_national
28
31
 
29
32
  ph.type
30
33
  > "fixed line"
34
+
35
+ ph.raw_number
36
+ > "+49 09131/76352435"
37
+
38
+ ph.country_code
39
+ > 'DE'
40
+
41
+ ph.numeric_country_code
42
+ > 49
43
+
44
+ ph.national_number
45
+ > 913176352435
46
+ ```
47
+
48
+ **GPhoneOfflineGeocoder**
49
+
50
+
51
+ ```ruby
52
+
53
+ geocoder = GPhoneOfflineGeocoder.new()
54
+
55
+ gastgeocoder.get_location_for_number('12063554274')
56
+ > "Washington"
57
+
31
58
  ```
32
59
 
60
+ **GPhoneNumberMatcher**
61
+
62
+
63
+ ```ruby
64
+
65
+ m = GPhoneNumberMatcher.new('Hier steht eine Nummer: 0211/543235-3, und hier noch eine: +1 213 542 8427.', 'DE')
66
+ m.numbers
67
+ > ["0211/543235-3", "+1 213 542 8427"]
68
+
69
+
70
+ ```
71
+
72
+
33
73
 
34
74
  Contribute
35
75
  ----------
data/Rakefile CHANGED
@@ -12,7 +12,7 @@ end
12
12
  require 'rake'
13
13
 
14
14
  require 'jeweler'
15
- Jeweler::Tasks.new do |gem|
15
+ jeweler_tasks = Jeweler::Tasks.new do |gem|
16
16
  # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
17
  gem.name = "gphone"
18
18
  gem.homepage = "http://github.com/elcamino/gphone"
@@ -23,8 +23,14 @@ Jeweler::Tasks.new do |gem|
23
23
  gem.authors = ["Tobias Begalke"]
24
24
  gem.files += Dir['ext/gphone/*.{cc,rb}']
25
25
  gem.require_paths = ['ext']
26
+ gem.platform = Gem::Platform::RUBY
27
+ gem.extensions = FileList["ext/gphone/extconf.rb"]
26
28
  # dependencies defined in Gemfile
27
29
  end
30
+
31
+ $gemspec = jeweler_tasks.gemspec
32
+ $gemspec.version = jeweler_tasks.jeweler.version
33
+
28
34
  Jeweler::RubygemsDotOrgTasks.new
29
35
 
30
36
  require 'rspec/core'
@@ -39,6 +45,7 @@ RSpec::Core::RakeTask.new(:rcov) do |spec|
39
45
  end
40
46
 
41
47
  task :default => :spec
48
+ task :rebuild => [:clean, :clobber, :compile, :spec]
42
49
 
43
50
  require 'rdoc/task'
44
51
  Rake::RDocTask.new do |rdoc|
@@ -51,4 +58,26 @@ Rake::RDocTask.new do |rdoc|
51
58
  end
52
59
 
53
60
  require 'rake/extensiontask'
54
- Rake::ExtensionTask.new('gphone')
61
+ Gem::PackageTask.new($gemspec) do |pkg|
62
+ pkg.need_tar = false
63
+ pkg.need_zip = false
64
+ end
65
+
66
+ Rake::ExtensionTask.new('gphone', $gemspec) do |ext|
67
+ end
68
+
69
+ CLEAN.include 'lib/**/*.so'
70
+
71
+ Rake::Task.tasks.each do |task_name|
72
+ case task_name.to_s
73
+ when /^native/
74
+ task_name.prerequisites.unshift("fix_rake_compiler_gemspec_dump")
75
+ end
76
+ end
77
+
78
+ task :fix_rake_compiler_gemspec_dump do
79
+ %w{files extra_rdoc_files test_files}.each do |accessor|
80
+ $gemspec.send(accessor).instance_eval { @exclude_procs = Array.new }
81
+ end
82
+ end
83
+
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
data/ext/gphone/Makefile CHANGED
@@ -12,12 +12,12 @@ ECHO = $(ECHO1:0=@echo)
12
12
  #### Start of system configuration section. ####
13
13
 
14
14
  srcdir = .
15
- topdir = /usr/local/rvm/rubies/ruby-1.9.3-p327/include/ruby-1.9.1
16
- hdrdir = /usr/local/rvm/rubies/ruby-1.9.3-p327/include/ruby-1.9.1
17
- arch_hdrdir = /usr/local/rvm/rubies/ruby-1.9.3-p327/include/ruby-1.9.1/$(arch)
15
+ topdir = /usr/local/rvm/rubies/ruby-1.9.3-p392/include/ruby-1.9.1
16
+ hdrdir = /usr/local/rvm/rubies/ruby-1.9.3-p392/include/ruby-1.9.1
17
+ arch_hdrdir = /usr/local/rvm/rubies/ruby-1.9.3-p392/include/ruby-1.9.1/$(arch)
18
18
  VPATH = $(srcdir):$(arch_hdrdir)/ruby:$(hdrdir)/ruby
19
19
 
20
- prefix = $(DESTDIR)/usr/local/rvm/rubies/ruby-1.9.3-p327
20
+ prefix = $(DESTDIR)/usr/local/rvm/rubies/ruby-1.9.3-p392
21
21
 
22
22
  rubylibprefix = $(libdir)/$(RUBY_BASE_NAME)
23
23
 
@@ -61,7 +61,7 @@ localstatedir = $(prefix)/var
61
61
 
62
62
  sharedstatedir = $(prefix)/com
63
63
 
64
- sysconfdir = $(prefix)/etc
64
+ sysconfdir = $(DESTDIR)/etc
65
65
 
66
66
  datadir = $(datarootdir)
67
67
 
@@ -92,8 +92,8 @@ CC = gcc
92
92
  CXX = g++
93
93
  LIBRUBY = $(LIBRUBY_SO)
94
94
  LIBRUBY_A = lib$(RUBY_SO_NAME)-static.a
95
- LIBRUBYARG_SHARED = -Wl,-R -Wl,$(libdir) -L$(libdir) -l$(RUBY_SO_NAME)
96
- LIBRUBYARG_STATIC = -Wl,-R -Wl,/usr/local/rvm/rubies/ruby-1.9.3-p327/lib -L/usr/local/rvm/rubies/ruby-1.9.3-p327/lib -lruby-static
95
+ LIBRUBYARG_SHARED = '-Wl,-rpath,$${ORIGIN}/../lib' -Wl,-R -Wl,$(libdir) -L$(libdir) -l$(RUBY_SO_NAME)
96
+ LIBRUBYARG_STATIC = '-Wl,-rpath,${ORIGIN}/../lib' -Wl,-R -Wl,/usr/local/rvm/rubies/ruby-1.9.3-p392/lib -L/usr/local/rvm/rubies/ruby-1.9.3-p392/lib -lruby-static
97
97
  empty =
98
98
  OUTFLAG = -o $(empty)
99
99
  COUTFLAG = -o $(empty)
@@ -103,12 +103,12 @@ cflags = $(optflags) $(debugflags) $(warnflags)
103
103
  optflags = -O3
104
104
  debugflags = -ggdb
105
105
  warnflags = -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration
106
- CFLAGS = -fPIC -I/usr/local/rvm/usr/include -fPIC $(ARCH_FLAG)
106
+ CFLAGS = -fPIC $(cflags) -fPIC $(ARCH_FLAG)
107
107
  INCFLAGS = -I. -I$(arch_hdrdir) -I$(hdrdir)/ruby/backward -I$(hdrdir) -I$(srcdir)
108
108
  DEFS =
109
- CPPFLAGS = $(DEFS) $(cppflags) -I/usr/local/rvm/gems/ruby-1.9.3-p327/gems/rice-1.4.3/ruby/lib/include
109
+ CPPFLAGS = $(DEFS) $(cppflags) -I/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rice-1.6.0/ruby/lib/include
110
110
  CXXFLAGS = $(CFLAGS) -Wall -g
111
- ldflags = -L. -L/usr/local/rvm/usr/lib -rdynamic -Wl,-export-dynamic -L/usr/local/rvm/gems/ruby-1.9.3-p327/gems/rice-1.4.3/ruby/lib/lib
111
+ ldflags = -L. -rdynamic -Wl,-export-dynamic -L/usr/local/rvm/gems/ruby-1.9.3-p392/gems/rice-1.6.0/ruby/lib/lib -lrice
112
112
  dldflags =
113
113
  ARCH_FLAG =
114
114
  DLDFLAGS = $(ldflags) $(dldflags) $(ARCH_FLAG)
@@ -123,7 +123,7 @@ RUBY_SO_NAME = ruby
123
123
  arch = x86_64-linux
124
124
  sitearch = $(arch)
125
125
  ruby_version = 1.9.1
126
- ruby = /usr/local/rvm/rubies/ruby-1.9.3-p327/bin/ruby
126
+ ruby = /usr/local/rvm/rubies/ruby-1.9.3-p392/bin/ruby
127
127
  RUBY = $(ruby)
128
128
  RM = rm -f
129
129
  RM_RF = $(RUBY) -run -e rm -- -rf
@@ -154,9 +154,9 @@ extout =
154
154
  extout_prefix =
155
155
  target_prefix =
156
156
  LOCAL_LIBS =
157
- LIBS = -lphonenumber -lboost_thread -lrice -Wl,-R -Wl,/usr/local/rvm/rubies/ruby-1.9.3-p327/lib -L/usr/local/rvm/rubies/ruby-1.9.3-p327/lib -lruby -lpthread -lrt -ldl -lcrypt -lm -lc
158
- SRCS = gphone.cc
159
- OBJS = gphone.o
157
+ LIBS = -lgeocoding -lphonenumber -lboost_thread '-Wl,-rpath,${ORIGIN}/../lib' -Wl,-R -Wl,/usr/local/rvm/rubies/ruby-1.9.3-p392/lib -L/usr/local/rvm/rubies/ruby-1.9.3-p392/lib -lruby -lpthread -lrt -ldl -lcrypt -lm -lc
158
+ SRCS = gphone.cc gphone_number_matcher.cc gphone_offline_geocoder.cc gphone_ruby.cc
159
+ OBJS = gphone.o gphone_number_matcher.o gphone_offline_geocoder.o gphone_ruby.o
160
160
  TARGET = gphone
161
161
  DLLIB = $(TARGET).so
162
162
  EXTSTATIC =
@@ -178,11 +178,12 @@ static: $(STATIC_LIB)
178
178
  .PHONY: all install static install-so install-rb
179
179
  .PHONY: clean clean-so clean-rb
180
180
 
181
+ clean-static::
181
182
  clean-rb-default::
182
183
  clean-rb::
183
184
  clean-so::
184
- clean: clean-so clean-rb-default clean-rb
185
- @-$(RM) $(CLEANLIBS) $(CLEANOBJS) $(CLEANFILES)
185
+ clean: clean-so clean-static clean-rb-default clean-rb
186
+ -$(Q)$(RM) $(CLEANLIBS) $(CLEANOBJS) $(CLEANFILES) .*.time
186
187
 
187
188
  distclean-rb-default::
188
189
  distclean-rb::
@@ -2,6 +2,5 @@ require 'mkmf-rice'
2
2
 
3
3
  have_library('boost_thread')
4
4
  have_library('phonenumber')
5
+ have_library('geocoding')
5
6
  create_makefile('gphone')
6
-
7
-
data/ext/gphone/gphone.cc CHANGED
@@ -10,38 +10,70 @@ using namespace std;
10
10
  using namespace i18n::phonenumbers;
11
11
  using namespace Rice;
12
12
 
13
+ #ifndef GPHONE_CLASS
14
+ #define GPHONE_CLASS
15
+
13
16
  namespace {
14
17
  class GPhoneException
15
18
  : public exception
16
19
  {
20
+ PhoneNumberUtil::ErrorType errorType;
21
+ string message;
22
+
23
+ #define DEFAULT_MESSAGE "Not a valid phone number!";
24
+
25
+ public:
26
+ GPhoneException() {
27
+ message = DEFAULT_MESSAGE;
28
+ }
29
+
30
+ GPhoneException(PhoneNumberUtil::ErrorType e) {
31
+ errorType = e;
32
+
33
+ message = DEFAULT_MESSAGE;
34
+ }
35
+
17
36
  virtual const char* what() const throw()
18
37
  {
19
- return "Not a valid phone number!";
38
+ return message.c_str();
39
+ }
40
+
41
+ virtual ~GPhoneException() throw() {
42
+
20
43
  }
21
44
  };
22
45
 
23
46
  class GPhone {
24
47
  string raw_number;
25
- string country_code;
48
+ string iso_country_code;
26
49
  PhoneNumber parsed_number;
27
50
  PhoneNumberUtil::PhoneNumberType type;
28
51
 
29
52
  public:
30
53
 
31
- GPhone(const string number, const string cc) {
54
+ GPhone(const string number, const string cc = "ZZ") {
32
55
  raw_number = number;
33
- country_code = cc;
34
56
 
35
- if (pu().Parse(raw_number, country_code, &parsed_number) != pu().NO_PARSING_ERROR) {
36
- throw GPhoneException();
57
+ PhoneNumberUtil::ErrorType er = pu().Parse(raw_number, iso_country_code, &parsed_number);
58
+
59
+ if (er != pu().NO_PARSING_ERROR) {
60
+ throw GPhoneException(er);
37
61
  }
38
62
 
63
+ if (cc != "ZZ") {
64
+ iso_country_code = cc;
65
+ } else {
66
+ pu().GetRegionCodeForNumber(parsed_number, &iso_country_code);
67
+ }
68
+
39
69
  type = pu().GetNumberType(parsed_number);
40
70
 
41
71
  }
42
72
 
43
73
  string get_raw_number() { return raw_number; }
44
- string get_country_code() { return country_code; }
74
+ string get_iso_country_code() { return iso_country_code; }
75
+ uint64 get_national_number() { return parsed_number.national_number(); }
76
+ int32 get_numeric_country_code() { return parsed_number.country_code(); }
45
77
 
46
78
  PhoneNumberUtil& pu() {
47
79
  return *PhoneNumberUtil::GetInstance();
@@ -52,14 +84,17 @@ namespace {
52
84
  string formatted_number;
53
85
  pu().Format(parsed_number, PhoneNumberUtil::E164, &formatted_number);
54
86
  return formatted_number;
55
- }
56
-
87
+ }
57
88
 
58
89
  bool is_valid()
59
90
  {
60
91
  return pu().IsValidNumber(parsed_number);
61
92
  }
62
93
 
94
+ bool is_valid_for_region(const string region_code) {
95
+ return pu().IsValidNumberForRegion(parsed_number, region_code);
96
+ }
97
+
63
98
  bool is_possible()
64
99
  {
65
100
  return pu().IsPossibleNumber(parsed_number);
@@ -96,27 +131,10 @@ namespace {
96
131
  case PhoneNumberUtil::VOICEMAIL:
97
132
  return "voicemail";
98
133
  default:
99
- return NULL;
134
+ return "unknown";
100
135
  }
101
136
  }
102
137
  };
103
138
 
104
139
  }
105
- extern "C"
106
-
107
- void Init_gphone() {
108
- RUBY_TRY
109
- {
110
- Class rb_cGPhone = define_class<GPhone>("GPhone")
111
- .define_constructor(Constructor<GPhone, const string, const string>())
112
- .define_method("raw_number", &GPhone::get_raw_number)
113
- .define_method("country_code", &GPhone::get_country_code)
114
- .define_method("valid?", &GPhone::is_valid)
115
- .define_method("possible?", &GPhone::is_possible)
116
- .define_method("format_national", &GPhone::format_national)
117
- .define_method("normalize", &GPhone::normalize)
118
- .define_method("type", &GPhone::get_type);
119
- }
120
- RUBY_CATCH
121
- }
122
-
140
+ #endif
@@ -0,0 +1,45 @@
1
+ #include "rice/Class.hpp"
2
+ #include "rice/String.hpp"
3
+ #include "rice/Array.hpp"
4
+ #include "rice/Data_Type.hpp"
5
+ #include "rice/Constructor.hpp"
6
+ #include <string>
7
+ #include <phonenumbers/phonenumberutil.h>
8
+ #include <phonenumbers/phonenumbermatcher.h>
9
+ #include <phonenumbers/phonenumbermatch.h>
10
+
11
+ using namespace std;
12
+ using namespace i18n::phonenumbers;
13
+ using namespace Rice;
14
+
15
+ #ifndef GPHONE_NUMBER_MATCHER_CLASS
16
+ #define GPHONE_NUMBER_MATCHER_CLASS
17
+
18
+ namespace {
19
+
20
+
21
+ class GPhoneNumberMatcher {
22
+ string raw_text;
23
+ string country_code;
24
+ Array matches;
25
+
26
+ public:
27
+
28
+ GPhoneNumberMatcher(const string text, const string cc) {
29
+ PhoneNumberMatcher matcher(text, cc);
30
+ PhoneNumberMatch m;
31
+
32
+ while (matcher.HasNext()) {
33
+
34
+ matcher.Next(&m);
35
+ matches.push(String(m.raw_string()));
36
+ }
37
+ }
38
+
39
+ Array numbers() {
40
+ return matches;
41
+ }
42
+ };
43
+ }
44
+
45
+ #endif
@@ -0,0 +1,41 @@
1
+ #include "rice/Class.hpp"
2
+ #include "rice/String.hpp"
3
+ #include "rice/Data_Type.hpp"
4
+ #include "rice/Constructor.hpp"
5
+ #include <string>
6
+ #include <phonenumbers/phonenumberutil.h>
7
+ #include <phonenumbers/phonenumbermatcher.h>
8
+ #include <phonenumbers/geocoding/phonenumber_offline_geocoder.h>
9
+
10
+ using namespace std;
11
+ using namespace i18n::phonenumbers;
12
+ using namespace Rice;
13
+
14
+ #ifndef GPHONEOFFLINEGEOCODER_CLASS
15
+ #define GPHONEOFFLINEGEOCODER_CLASS
16
+
17
+ namespace {
18
+ class GPhoneOfflineGeocoder {
19
+ PhoneNumberOfflineGeocoder geocoder;
20
+
21
+ public:
22
+ GPhoneOfflineGeocoder() {
23
+
24
+ }
25
+
26
+ string get_location_for_number(string number, string locale = "en_US", string user_region = "US") {
27
+ const PhoneNumberUtil& pu = *PhoneNumberUtil::GetInstance();
28
+
29
+ PhoneNumber pn;
30
+ const PhoneNumberUtil::ErrorType status = pu.Parse(number, user_region, &pn);
31
+
32
+ assert(status == PhoneNumberUtil::NO_PARSING_ERROR);
33
+
34
+ const string description = geocoder.GetDescriptionForNumber(pn, icu::Locale(locale.c_str()), user_region);
35
+
36
+ return description;
37
+ }
38
+ };
39
+ }
40
+
41
+ #endif
@@ -0,0 +1,32 @@
1
+ #include "gphone.cc"
2
+ #include "gphone_offline_geocoder.cc"
3
+ #include "gphone_number_matcher.cc"
4
+
5
+ extern "C"
6
+
7
+ void Init_gphone() {
8
+ RUBY_TRY
9
+ {
10
+ Class rb_cGPhone = define_class<GPhone>("GPhone")
11
+ .define_constructor(Constructor<GPhone, const string, const string>(), (Arg("number"), Arg("country_code") = (string) "ZZ"))
12
+ .define_method("raw_number", &GPhone::get_raw_number)
13
+ .define_method("country_code", &GPhone::get_iso_country_code)
14
+ .define_method("numeric_country_code", &GPhone::get_numeric_country_code)
15
+ .define_method("national_number", &GPhone::get_national_number)
16
+ .define_method("valid?", &GPhone::is_valid)
17
+ .define_method("valid_for_region?", &GPhone::is_valid_for_region)
18
+ .define_method("possible?", &GPhone::is_possible)
19
+ .define_method("format_national", &GPhone::format_national)
20
+ .define_method("normalize", &GPhone::normalize)
21
+ .define_method("type", &GPhone::get_type);
22
+
23
+ Class rb_cGPhoneOfflineGeocoder = define_class<GPhoneOfflineGeocoder>("GPhoneOfflineGeocoder")
24
+ .define_constructor(Constructor<GPhoneOfflineGeocoder>())
25
+ .define_method("get_location_for_number", &GPhoneOfflineGeocoder::get_location_for_number, (Arg("number"), Arg("locale") = (string) "en_US", Arg("user_region") = (string) "US"));
26
+
27
+ Class rb_cGPhoneNumberMatcher = define_class<GPhoneNumberMatcher>("GPhoneNumberMatcher")
28
+ .define_constructor(Constructor<GPhoneNumberMatcher, const string, const string>())
29
+ .define_method("numbers", &GPhoneNumberMatcher::numbers);
30
+ }
31
+ RUBY_CATCH
32
+ }
data/gphone.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "gphone"
8
- s.version = "0.1.0"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Tobias Begalke"]
12
- s.date = "2012-11-14"
12
+ s.date = "2014-02-12"
13
13
  s.description = "ruby bindings for Google's libphonenumber (see http://code.google.com/p/libphonenumber/)"
14
14
  s.email = "tob@spyz.org"
15
15
  s.extensions = ["ext/gphone/extconf.rb"]
@@ -28,41 +28,139 @@ Gem::Specification.new do |s|
28
28
  "ext/gphone/Makefile",
29
29
  "ext/gphone/extconf.rb",
30
30
  "ext/gphone/gphone.cc",
31
+ "ext/gphone/gphone_number_matcher.cc",
32
+ "ext/gphone/gphone_offline_geocoder.cc",
33
+ "ext/gphone/gphone_ruby.cc",
31
34
  "gphone.gemspec",
35
+ "spec/gphone_number_matcher_spec.rb",
36
+ "spec/gphone_offline_geocoder_spec.rb",
32
37
  "spec/gphone_spec.rb",
33
38
  "spec/spec_helper.rb"
34
39
  ]
35
40
  s.homepage = "http://github.com/elcamino/gphone"
36
41
  s.licenses = ["BSD"]
37
42
  s.require_paths = ["ext"]
38
- s.rubygems_version = "1.8.24"
43
+ s.rubygems_version = "1.8.25"
39
44
  s.summary = "ruby bindings for Google's libphonenumber"
40
45
 
41
46
  if s.respond_to? :specification_version then
42
47
  s.specification_version = 3
43
48
 
44
49
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
50
+ s.add_runtime_dependency(%q<gphone>, [">= 0"])
45
51
  s.add_runtime_dependency(%q<rice>, [">= 0"])
46
52
  s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
47
53
  s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
48
54
  s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
49
55
  s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
50
56
  s.add_development_dependency(%q<simplecov>, [">= 0"])
57
+ s.add_development_dependency(%q<ruby-debug19>, [">= 0"])
58
+ s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
59
+ s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
60
+ s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
61
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
62
+ s.add_development_dependency(%q<simplecov>, [">= 0"])
63
+ s.add_development_dependency(%q<ruby-debug19>, [">= 0"])
64
+ s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
65
+ s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
66
+ s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
67
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
68
+ s.add_development_dependency(%q<simplecov>, [">= 0"])
69
+ s.add_development_dependency(%q<ruby-debug19>, [">= 0"])
70
+ s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
71
+ s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
72
+ s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
73
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
74
+ s.add_development_dependency(%q<simplecov>, [">= 0"])
75
+ s.add_development_dependency(%q<ruby-debug19>, [">= 0"])
76
+ s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
77
+ s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
78
+ s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
79
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
80
+ s.add_development_dependency(%q<simplecov>, [">= 0"])
81
+ s.add_development_dependency(%q<ruby-debug19>, [">= 0"])
82
+ s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
83
+ s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
84
+ s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
85
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
86
+ s.add_development_dependency(%q<simplecov>, [">= 0"])
51
87
  else
88
+ s.add_dependency(%q<gphone>, [">= 0"])
52
89
  s.add_dependency(%q<rice>, [">= 0"])
53
90
  s.add_dependency(%q<rspec>, ["~> 2.8.0"])
54
91
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
55
92
  s.add_dependency(%q<bundler>, [">= 1.0.0"])
56
93
  s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
57
94
  s.add_dependency(%q<simplecov>, [">= 0"])
95
+ s.add_dependency(%q<ruby-debug19>, [">= 0"])
96
+ s.add_dependency(%q<rspec>, ["~> 2.8.0"])
97
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
98
+ s.add_dependency(%q<bundler>, [">= 1.0.0"])
99
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
100
+ s.add_dependency(%q<simplecov>, [">= 0"])
101
+ s.add_dependency(%q<ruby-debug19>, [">= 0"])
102
+ s.add_dependency(%q<rspec>, ["~> 2.8.0"])
103
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
104
+ s.add_dependency(%q<bundler>, [">= 1.0.0"])
105
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
106
+ s.add_dependency(%q<simplecov>, [">= 0"])
107
+ s.add_dependency(%q<ruby-debug19>, [">= 0"])
108
+ s.add_dependency(%q<rspec>, ["~> 2.8.0"])
109
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
110
+ s.add_dependency(%q<bundler>, [">= 1.0.0"])
111
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
112
+ s.add_dependency(%q<simplecov>, [">= 0"])
113
+ s.add_dependency(%q<ruby-debug19>, [">= 0"])
114
+ s.add_dependency(%q<rspec>, ["~> 2.8.0"])
115
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
116
+ s.add_dependency(%q<bundler>, [">= 1.0.0"])
117
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
118
+ s.add_dependency(%q<simplecov>, [">= 0"])
119
+ s.add_dependency(%q<ruby-debug19>, [">= 0"])
120
+ s.add_dependency(%q<rspec>, ["~> 2.8.0"])
121
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
122
+ s.add_dependency(%q<bundler>, [">= 1.0.0"])
123
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
124
+ s.add_dependency(%q<simplecov>, [">= 0"])
58
125
  end
59
126
  else
127
+ s.add_dependency(%q<gphone>, [">= 0"])
60
128
  s.add_dependency(%q<rice>, [">= 0"])
61
129
  s.add_dependency(%q<rspec>, ["~> 2.8.0"])
62
130
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
63
131
  s.add_dependency(%q<bundler>, [">= 1.0.0"])
64
132
  s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
65
133
  s.add_dependency(%q<simplecov>, [">= 0"])
134
+ s.add_dependency(%q<ruby-debug19>, [">= 0"])
135
+ s.add_dependency(%q<rspec>, ["~> 2.8.0"])
136
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
137
+ s.add_dependency(%q<bundler>, [">= 1.0.0"])
138
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
139
+ s.add_dependency(%q<simplecov>, [">= 0"])
140
+ s.add_dependency(%q<ruby-debug19>, [">= 0"])
141
+ s.add_dependency(%q<rspec>, ["~> 2.8.0"])
142
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
143
+ s.add_dependency(%q<bundler>, [">= 1.0.0"])
144
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
145
+ s.add_dependency(%q<simplecov>, [">= 0"])
146
+ s.add_dependency(%q<ruby-debug19>, [">= 0"])
147
+ s.add_dependency(%q<rspec>, ["~> 2.8.0"])
148
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
149
+ s.add_dependency(%q<bundler>, [">= 1.0.0"])
150
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
151
+ s.add_dependency(%q<simplecov>, [">= 0"])
152
+ s.add_dependency(%q<ruby-debug19>, [">= 0"])
153
+ s.add_dependency(%q<rspec>, ["~> 2.8.0"])
154
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
155
+ s.add_dependency(%q<bundler>, [">= 1.0.0"])
156
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
157
+ s.add_dependency(%q<simplecov>, [">= 0"])
158
+ s.add_dependency(%q<ruby-debug19>, [">= 0"])
159
+ s.add_dependency(%q<rspec>, ["~> 2.8.0"])
160
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
161
+ s.add_dependency(%q<bundler>, [">= 1.0.0"])
162
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
163
+ s.add_dependency(%q<simplecov>, [">= 0"])
66
164
  end
67
165
  end
68
166
 
@@ -0,0 +1,11 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "GPhoneNumberMatcher" do
4
+ subject { GPhoneNumberMatcher.new('Hier steht eine Nummer: 0211/543235-3, und hier noch eine: +1 213 542 8427.', 'DE') }
5
+
6
+ it { should be }
7
+ it { should be_an_instance_of GPhoneNumberMatcher }
8
+ it "should return both numbers in the given text" do
9
+ subject.numbers.should == ["0211/543235-3", "+1 213 542 8427"]
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "GPhoneOfflineGeocoder.new()" do
4
+ subject { GPhoneOfflineGeocoder.new() }
5
+
6
+ it { should be }
7
+ it { should be_an_instance_of GPhoneOfflineGeocoder }
8
+ it "should return locations for numbers" do
9
+ subject.get_location_for_number("12063554274").should == "Washington"
10
+ end
11
+ end
data/spec/gphone_spec.rb CHANGED
@@ -7,9 +7,18 @@ describe "GPhone.new('+49 09131/76352435', 'DE') (ie. with a valid number)" do
7
7
 
8
8
  it { should be_an_instance_of GPhone }
9
9
  its(:valid?) { should be }
10
+ it "should be valid for region 'DE'" do
11
+ subject.valid_for_region?('DE').should be
12
+ end
13
+
14
+ it "should not be valid for region 'US'" do
15
+ subject.valid_for_region?('US').should_not be
16
+ end
10
17
  its(:possible?) { should be }
11
18
  its(:raw_number) { should == '+49 09131/76352435' }
12
19
  its(:country_code) { should == 'DE' }
20
+ its(:numeric_country_code) { should == 49 }
21
+ its(:national_number) { should == 913176352435 }
13
22
  its(:normalize) { should == '+49913176352435' }
14
23
  its(:format_national) { should == '09131 76352435' }
15
24
  its(:type) { should == 'fixed line' }
@@ -20,3 +29,30 @@ end
20
29
  describe "GPhone.new('09543657 4567474567 4674', 'DE') (ie. with an invalid number)" do
21
30
  it { lambda { GPhone.new('09543657 4567474567 4674', 'DE') }.should raise_error }
22
31
  end
32
+
33
+ describe "GPhone.new('+12069735100') (i.e. a fully qualified number)" do
34
+ subject { GPhone.new('+12069735100') }
35
+
36
+ it { should be }
37
+
38
+ it { should be_an_instance_of GPhone }
39
+ its(:valid?) { should be }
40
+ it "should not be valid for region 'DE'" do
41
+ subject.valid_for_region?('DE').should_not be
42
+ end
43
+
44
+ it "should be valid for region 'US'" do
45
+ subject.valid_for_region?('US').should be
46
+ end
47
+ its(:possible?) { should be }
48
+ its(:country_code) { should == 'US' }
49
+ its(:numeric_country_code) { should == 1 }
50
+ its(:national_number) { should == 2069735100 }
51
+ its(:normalize) { should == '+12069735100' }
52
+ its(:format_national) { should == '(206) 973-5100' }
53
+ its(:type) { should == "unknown" }
54
+ end
55
+
56
+ describe "GPhone.new('12345234') (ie. with an invalid number)" do
57
+ it { lambda { GPhone.new('12345234') }.should raise_error }
58
+ end
data/spec/spec_helper.rb CHANGED
@@ -8,5 +8,5 @@ require 'gphone'
8
8
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
9
9
 
10
10
  RSpec.configure do |config|
11
-
11
+
12
12
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gphone
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,8 +9,24 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-14 00:00:00.000000000 Z
12
+ date: 2014-02-12 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: gphone
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
14
30
  - !ruby/object:Gem::Dependency
15
31
  name: rice
16
32
  requirement: !ruby/object:Gem::Requirement
@@ -107,6 +123,486 @@ dependencies:
107
123
  - - ! '>='
108
124
  - !ruby/object:Gem::Version
109
125
  version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: ruby-debug19
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ - !ruby/object:Gem::Dependency
143
+ name: rspec
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ~>
148
+ - !ruby/object:Gem::Version
149
+ version: 2.8.0
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ~>
156
+ - !ruby/object:Gem::Version
157
+ version: 2.8.0
158
+ - !ruby/object:Gem::Dependency
159
+ name: rdoc
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ~>
164
+ - !ruby/object:Gem::Version
165
+ version: '3.12'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ~>
172
+ - !ruby/object:Gem::Version
173
+ version: '3.12'
174
+ - !ruby/object:Gem::Dependency
175
+ name: bundler
176
+ requirement: !ruby/object:Gem::Requirement
177
+ none: false
178
+ requirements:
179
+ - - ! '>='
180
+ - !ruby/object:Gem::Version
181
+ version: 1.0.0
182
+ type: :development
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - ! '>='
188
+ - !ruby/object:Gem::Version
189
+ version: 1.0.0
190
+ - !ruby/object:Gem::Dependency
191
+ name: jeweler
192
+ requirement: !ruby/object:Gem::Requirement
193
+ none: false
194
+ requirements:
195
+ - - ~>
196
+ - !ruby/object:Gem::Version
197
+ version: 1.8.4
198
+ type: :development
199
+ prerelease: false
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ~>
204
+ - !ruby/object:Gem::Version
205
+ version: 1.8.4
206
+ - !ruby/object:Gem::Dependency
207
+ name: simplecov
208
+ requirement: !ruby/object:Gem::Requirement
209
+ none: false
210
+ requirements:
211
+ - - ! '>='
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ type: :development
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ none: false
218
+ requirements:
219
+ - - ! '>='
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
222
+ - !ruby/object:Gem::Dependency
223
+ name: ruby-debug19
224
+ requirement: !ruby/object:Gem::Requirement
225
+ none: false
226
+ requirements:
227
+ - - ! '>='
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ none: false
234
+ requirements:
235
+ - - ! '>='
236
+ - !ruby/object:Gem::Version
237
+ version: '0'
238
+ - !ruby/object:Gem::Dependency
239
+ name: rspec
240
+ requirement: !ruby/object:Gem::Requirement
241
+ none: false
242
+ requirements:
243
+ - - ~>
244
+ - !ruby/object:Gem::Version
245
+ version: 2.8.0
246
+ type: :development
247
+ prerelease: false
248
+ version_requirements: !ruby/object:Gem::Requirement
249
+ none: false
250
+ requirements:
251
+ - - ~>
252
+ - !ruby/object:Gem::Version
253
+ version: 2.8.0
254
+ - !ruby/object:Gem::Dependency
255
+ name: rdoc
256
+ requirement: !ruby/object:Gem::Requirement
257
+ none: false
258
+ requirements:
259
+ - - ~>
260
+ - !ruby/object:Gem::Version
261
+ version: '3.12'
262
+ type: :development
263
+ prerelease: false
264
+ version_requirements: !ruby/object:Gem::Requirement
265
+ none: false
266
+ requirements:
267
+ - - ~>
268
+ - !ruby/object:Gem::Version
269
+ version: '3.12'
270
+ - !ruby/object:Gem::Dependency
271
+ name: bundler
272
+ requirement: !ruby/object:Gem::Requirement
273
+ none: false
274
+ requirements:
275
+ - - ! '>='
276
+ - !ruby/object:Gem::Version
277
+ version: 1.0.0
278
+ type: :development
279
+ prerelease: false
280
+ version_requirements: !ruby/object:Gem::Requirement
281
+ none: false
282
+ requirements:
283
+ - - ! '>='
284
+ - !ruby/object:Gem::Version
285
+ version: 1.0.0
286
+ - !ruby/object:Gem::Dependency
287
+ name: jeweler
288
+ requirement: !ruby/object:Gem::Requirement
289
+ none: false
290
+ requirements:
291
+ - - ~>
292
+ - !ruby/object:Gem::Version
293
+ version: 1.8.4
294
+ type: :development
295
+ prerelease: false
296
+ version_requirements: !ruby/object:Gem::Requirement
297
+ none: false
298
+ requirements:
299
+ - - ~>
300
+ - !ruby/object:Gem::Version
301
+ version: 1.8.4
302
+ - !ruby/object:Gem::Dependency
303
+ name: simplecov
304
+ requirement: !ruby/object:Gem::Requirement
305
+ none: false
306
+ requirements:
307
+ - - ! '>='
308
+ - !ruby/object:Gem::Version
309
+ version: '0'
310
+ type: :development
311
+ prerelease: false
312
+ version_requirements: !ruby/object:Gem::Requirement
313
+ none: false
314
+ requirements:
315
+ - - ! '>='
316
+ - !ruby/object:Gem::Version
317
+ version: '0'
318
+ - !ruby/object:Gem::Dependency
319
+ name: ruby-debug19
320
+ requirement: !ruby/object:Gem::Requirement
321
+ none: false
322
+ requirements:
323
+ - - ! '>='
324
+ - !ruby/object:Gem::Version
325
+ version: '0'
326
+ type: :development
327
+ prerelease: false
328
+ version_requirements: !ruby/object:Gem::Requirement
329
+ none: false
330
+ requirements:
331
+ - - ! '>='
332
+ - !ruby/object:Gem::Version
333
+ version: '0'
334
+ - !ruby/object:Gem::Dependency
335
+ name: rspec
336
+ requirement: !ruby/object:Gem::Requirement
337
+ none: false
338
+ requirements:
339
+ - - ~>
340
+ - !ruby/object:Gem::Version
341
+ version: 2.8.0
342
+ type: :development
343
+ prerelease: false
344
+ version_requirements: !ruby/object:Gem::Requirement
345
+ none: false
346
+ requirements:
347
+ - - ~>
348
+ - !ruby/object:Gem::Version
349
+ version: 2.8.0
350
+ - !ruby/object:Gem::Dependency
351
+ name: rdoc
352
+ requirement: !ruby/object:Gem::Requirement
353
+ none: false
354
+ requirements:
355
+ - - ~>
356
+ - !ruby/object:Gem::Version
357
+ version: '3.12'
358
+ type: :development
359
+ prerelease: false
360
+ version_requirements: !ruby/object:Gem::Requirement
361
+ none: false
362
+ requirements:
363
+ - - ~>
364
+ - !ruby/object:Gem::Version
365
+ version: '3.12'
366
+ - !ruby/object:Gem::Dependency
367
+ name: bundler
368
+ requirement: !ruby/object:Gem::Requirement
369
+ none: false
370
+ requirements:
371
+ - - ! '>='
372
+ - !ruby/object:Gem::Version
373
+ version: 1.0.0
374
+ type: :development
375
+ prerelease: false
376
+ version_requirements: !ruby/object:Gem::Requirement
377
+ none: false
378
+ requirements:
379
+ - - ! '>='
380
+ - !ruby/object:Gem::Version
381
+ version: 1.0.0
382
+ - !ruby/object:Gem::Dependency
383
+ name: jeweler
384
+ requirement: !ruby/object:Gem::Requirement
385
+ none: false
386
+ requirements:
387
+ - - ~>
388
+ - !ruby/object:Gem::Version
389
+ version: 1.8.4
390
+ type: :development
391
+ prerelease: false
392
+ version_requirements: !ruby/object:Gem::Requirement
393
+ none: false
394
+ requirements:
395
+ - - ~>
396
+ - !ruby/object:Gem::Version
397
+ version: 1.8.4
398
+ - !ruby/object:Gem::Dependency
399
+ name: simplecov
400
+ requirement: !ruby/object:Gem::Requirement
401
+ none: false
402
+ requirements:
403
+ - - ! '>='
404
+ - !ruby/object:Gem::Version
405
+ version: '0'
406
+ type: :development
407
+ prerelease: false
408
+ version_requirements: !ruby/object:Gem::Requirement
409
+ none: false
410
+ requirements:
411
+ - - ! '>='
412
+ - !ruby/object:Gem::Version
413
+ version: '0'
414
+ - !ruby/object:Gem::Dependency
415
+ name: ruby-debug19
416
+ requirement: !ruby/object:Gem::Requirement
417
+ none: false
418
+ requirements:
419
+ - - ! '>='
420
+ - !ruby/object:Gem::Version
421
+ version: '0'
422
+ type: :development
423
+ prerelease: false
424
+ version_requirements: !ruby/object:Gem::Requirement
425
+ none: false
426
+ requirements:
427
+ - - ! '>='
428
+ - !ruby/object:Gem::Version
429
+ version: '0'
430
+ - !ruby/object:Gem::Dependency
431
+ name: rspec
432
+ requirement: !ruby/object:Gem::Requirement
433
+ none: false
434
+ requirements:
435
+ - - ~>
436
+ - !ruby/object:Gem::Version
437
+ version: 2.8.0
438
+ type: :development
439
+ prerelease: false
440
+ version_requirements: !ruby/object:Gem::Requirement
441
+ none: false
442
+ requirements:
443
+ - - ~>
444
+ - !ruby/object:Gem::Version
445
+ version: 2.8.0
446
+ - !ruby/object:Gem::Dependency
447
+ name: rdoc
448
+ requirement: !ruby/object:Gem::Requirement
449
+ none: false
450
+ requirements:
451
+ - - ~>
452
+ - !ruby/object:Gem::Version
453
+ version: '3.12'
454
+ type: :development
455
+ prerelease: false
456
+ version_requirements: !ruby/object:Gem::Requirement
457
+ none: false
458
+ requirements:
459
+ - - ~>
460
+ - !ruby/object:Gem::Version
461
+ version: '3.12'
462
+ - !ruby/object:Gem::Dependency
463
+ name: bundler
464
+ requirement: !ruby/object:Gem::Requirement
465
+ none: false
466
+ requirements:
467
+ - - ! '>='
468
+ - !ruby/object:Gem::Version
469
+ version: 1.0.0
470
+ type: :development
471
+ prerelease: false
472
+ version_requirements: !ruby/object:Gem::Requirement
473
+ none: false
474
+ requirements:
475
+ - - ! '>='
476
+ - !ruby/object:Gem::Version
477
+ version: 1.0.0
478
+ - !ruby/object:Gem::Dependency
479
+ name: jeweler
480
+ requirement: !ruby/object:Gem::Requirement
481
+ none: false
482
+ requirements:
483
+ - - ~>
484
+ - !ruby/object:Gem::Version
485
+ version: 1.8.4
486
+ type: :development
487
+ prerelease: false
488
+ version_requirements: !ruby/object:Gem::Requirement
489
+ none: false
490
+ requirements:
491
+ - - ~>
492
+ - !ruby/object:Gem::Version
493
+ version: 1.8.4
494
+ - !ruby/object:Gem::Dependency
495
+ name: simplecov
496
+ requirement: !ruby/object:Gem::Requirement
497
+ none: false
498
+ requirements:
499
+ - - ! '>='
500
+ - !ruby/object:Gem::Version
501
+ version: '0'
502
+ type: :development
503
+ prerelease: false
504
+ version_requirements: !ruby/object:Gem::Requirement
505
+ none: false
506
+ requirements:
507
+ - - ! '>='
508
+ - !ruby/object:Gem::Version
509
+ version: '0'
510
+ - !ruby/object:Gem::Dependency
511
+ name: ruby-debug19
512
+ requirement: !ruby/object:Gem::Requirement
513
+ none: false
514
+ requirements:
515
+ - - ! '>='
516
+ - !ruby/object:Gem::Version
517
+ version: '0'
518
+ type: :development
519
+ prerelease: false
520
+ version_requirements: !ruby/object:Gem::Requirement
521
+ none: false
522
+ requirements:
523
+ - - ! '>='
524
+ - !ruby/object:Gem::Version
525
+ version: '0'
526
+ - !ruby/object:Gem::Dependency
527
+ name: rspec
528
+ requirement: !ruby/object:Gem::Requirement
529
+ none: false
530
+ requirements:
531
+ - - ~>
532
+ - !ruby/object:Gem::Version
533
+ version: 2.8.0
534
+ type: :development
535
+ prerelease: false
536
+ version_requirements: !ruby/object:Gem::Requirement
537
+ none: false
538
+ requirements:
539
+ - - ~>
540
+ - !ruby/object:Gem::Version
541
+ version: 2.8.0
542
+ - !ruby/object:Gem::Dependency
543
+ name: rdoc
544
+ requirement: !ruby/object:Gem::Requirement
545
+ none: false
546
+ requirements:
547
+ - - ~>
548
+ - !ruby/object:Gem::Version
549
+ version: '3.12'
550
+ type: :development
551
+ prerelease: false
552
+ version_requirements: !ruby/object:Gem::Requirement
553
+ none: false
554
+ requirements:
555
+ - - ~>
556
+ - !ruby/object:Gem::Version
557
+ version: '3.12'
558
+ - !ruby/object:Gem::Dependency
559
+ name: bundler
560
+ requirement: !ruby/object:Gem::Requirement
561
+ none: false
562
+ requirements:
563
+ - - ! '>='
564
+ - !ruby/object:Gem::Version
565
+ version: 1.0.0
566
+ type: :development
567
+ prerelease: false
568
+ version_requirements: !ruby/object:Gem::Requirement
569
+ none: false
570
+ requirements:
571
+ - - ! '>='
572
+ - !ruby/object:Gem::Version
573
+ version: 1.0.0
574
+ - !ruby/object:Gem::Dependency
575
+ name: jeweler
576
+ requirement: !ruby/object:Gem::Requirement
577
+ none: false
578
+ requirements:
579
+ - - ~>
580
+ - !ruby/object:Gem::Version
581
+ version: 1.8.4
582
+ type: :development
583
+ prerelease: false
584
+ version_requirements: !ruby/object:Gem::Requirement
585
+ none: false
586
+ requirements:
587
+ - - ~>
588
+ - !ruby/object:Gem::Version
589
+ version: 1.8.4
590
+ - !ruby/object:Gem::Dependency
591
+ name: simplecov
592
+ requirement: !ruby/object:Gem::Requirement
593
+ none: false
594
+ requirements:
595
+ - - ! '>='
596
+ - !ruby/object:Gem::Version
597
+ version: '0'
598
+ type: :development
599
+ prerelease: false
600
+ version_requirements: !ruby/object:Gem::Requirement
601
+ none: false
602
+ requirements:
603
+ - - ! '>='
604
+ - !ruby/object:Gem::Version
605
+ version: '0'
110
606
  description: ruby bindings for Google's libphonenumber (see http://code.google.com/p/libphonenumber/)
111
607
  email: tob@spyz.org
112
608
  executables: []
@@ -126,7 +622,12 @@ files:
126
622
  - ext/gphone/Makefile
127
623
  - ext/gphone/extconf.rb
128
624
  - ext/gphone/gphone.cc
625
+ - ext/gphone/gphone_number_matcher.cc
626
+ - ext/gphone/gphone_offline_geocoder.cc
627
+ - ext/gphone/gphone_ruby.cc
129
628
  - gphone.gemspec
629
+ - spec/gphone_number_matcher_spec.rb
630
+ - spec/gphone_offline_geocoder_spec.rb
130
631
  - spec/gphone_spec.rb
131
632
  - spec/spec_helper.rb
132
633
  homepage: http://github.com/elcamino/gphone
@@ -144,7 +645,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
144
645
  version: '0'
145
646
  segments:
146
647
  - 0
147
- hash: -1938156335739255995
648
+ hash: 2453741018466773048
148
649
  required_rubygems_version: !ruby/object:Gem::Requirement
149
650
  none: false
150
651
  requirements:
@@ -153,7 +654,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
153
654
  version: '0'
154
655
  requirements: []
155
656
  rubyforge_project:
156
- rubygems_version: 1.8.24
657
+ rubygems_version: 1.8.25
157
658
  signing_key:
158
659
  specification_version: 3
159
660
  summary: ruby bindings for Google's libphonenumber