gphone 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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