rgeoip 0.0.3 → 0.0.4

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.3
1
+ 0.0.4
@@ -1,4 +1,7 @@
1
1
  #include "ruby.h"
2
+ #ifdef HAVE_RUBY_ENCODING_H
3
+ #include "ruby/encoding.h"
4
+ #endif
2
5
  #include <GeoIP.h>
3
6
  #include <GeoIPCity.h>
4
7
 
@@ -27,11 +30,19 @@ enum {
27
30
 
28
31
  static VALUE rb_cRgeoip, rb_cRgeoipDatabase;
29
32
  static VALUE rgeoip_symbols[RGEOIP_SYMBOLS_MAX];
33
+ static ID i_to_s;
34
+ #ifdef HAVE_RUBY_ENCODING_H
35
+ static rb_encoding *enc_utf8;
36
+ static rb_encoding *enc_iso_8859_1;
37
+ #endif
30
38
 
31
39
  /* -------- */
32
40
 
33
41
  typedef struct {
34
- VALUE databases;
42
+ VALUE databases;
43
+ #ifdef HAVE_RUBY_ENCODING_H
44
+ rb_encoding *encoding;
45
+ #endif
35
46
  } Rgeoip;
36
47
 
37
48
  typedef struct {
@@ -54,6 +65,12 @@ static VALUE
54
65
  gi_country(VALUE self, VALUE addr_or_host);
55
66
  static VALUE
56
67
  gi_city(VALUE self, VALUE addr_or_host);
68
+ #ifdef HAVE_RUBY_ENCODING_H
69
+ static VALUE
70
+ gi_set_encoding(VALUE, VALUE);
71
+ static VALUE
72
+ gi_get_encoding(VALUE);
73
+ #endif
57
74
  static VALUE
58
75
  gid_alloc(VALUE klass);
59
76
  static void
@@ -64,6 +81,14 @@ static VALUE
64
81
  gid_country(VALUE self, VALUE addr_or_host);
65
82
  static VALUE
66
83
  gid_city(VALUE self, VALUE addr_or_host);
84
+ #ifdef HAVE_RUBY_ENCODING_H
85
+ static VALUE
86
+ gid_set_encoding(VALUE, VALUE);
87
+ static VALUE
88
+ gid_get_encoding(VALUE);
89
+ #endif
90
+ static VALUE
91
+ gid_enc_str(RgeoipDatabase *, const char*);
67
92
  static GeoIP_id_by
68
93
  GeoIP_id_dwim(VALUE addr);
69
94
  static GeoIP_record_by
@@ -72,6 +97,10 @@ static int
72
97
  is_addr_p(VALUE value);
73
98
  static VALUE
74
99
  rb_hash_sset(VALUE hash, VALUE key, VALUE value);
100
+ #ifdef HAVE_RUBY_ENCODING_H
101
+ static rb_encoding*
102
+ charset2encoding(GeoIPCharset charset);
103
+ #endif
75
104
 
76
105
  /* Rgeoip */
77
106
  /*
@@ -124,6 +153,9 @@ gi_new(int argc, VALUE *argv, VALUE self)
124
153
  }
125
154
 
126
155
  gi->databases = rb_ary_new();
156
+ #ifdef HAVE_RUBY_ENCODING_H
157
+ gi->encoding = enc_iso_8859_1;
158
+ #endif
127
159
 
128
160
  for (i=0; i<argc; i++)
129
161
  {
@@ -154,7 +186,7 @@ static VALUE
154
186
  gi_open(VALUE self, VALUE filenames)
155
187
  {
156
188
  Rgeoip *gi;
157
- VALUE args[1] = {0};
189
+ VALUE args[3] = {0};
158
190
  Data_Get_Struct(self, Rgeoip, gi);
159
191
 
160
192
  if (TYPE(filenames) == T_ARRAY)
@@ -164,7 +196,11 @@ gi_open(VALUE self, VALUE filenames)
164
196
  else
165
197
  {
166
198
  args[0] = filenames;
167
- rb_ary_push(gi->databases, rb_class_new_instance(1, args, rb_cRgeoipDatabase));
199
+ args[1] = Qnil;
200
+ #ifdef HAVE_RUBY_ENCODING_H
201
+ args[2] = gi_get_encoding(self);
202
+ #endif
203
+ rb_ary_push(gi->databases, rb_class_new_instance(3, args, rb_cRgeoipDatabase));
168
204
  }
169
205
 
170
206
  return self;
@@ -243,6 +279,39 @@ gi_city(VALUE self, VALUE addr_or_host)
243
279
  return Qnil;
244
280
  }
245
281
 
282
+ #ifdef HAVE_RUBY_ENCODING_H
283
+ static VALUE
284
+ gi_set_encoding(VALUE self, VALUE enc)
285
+ {
286
+ Rgeoip *gi;
287
+ rb_encoding *rb_enc;
288
+ Data_Get_Struct(self, Rgeoip, gi);
289
+
290
+ rb_enc = rb_to_encoding(enc);
291
+ if (strcmp((rb_enc_name(rb_enc)), "UTF-8") == 0 ||
292
+ strcmp((rb_enc_name(rb_enc)), "ISO-8859-1") == 0)
293
+ {
294
+ gi->encoding = rb_enc;
295
+ }
296
+ else
297
+ {
298
+ rb_raise(rb_eRuntimeError, "Unsupported Encoding");
299
+ }
300
+ return gi_get_encoding(self);
301
+ }
302
+ #endif
303
+
304
+ #ifdef HAVE_RUBY_ENCODING_H
305
+ static VALUE
306
+ gi_get_encoding(VALUE self)
307
+ {
308
+ Rgeoip *gi;
309
+ Data_Get_Struct(self, Rgeoip, gi);
310
+
311
+ return rb_enc_from_encoding(gi->encoding);
312
+ }
313
+ #endif
314
+
246
315
  /* Rgeoip::Database */
247
316
  /*
248
317
  * Document-class: Rgeoip::Database
@@ -280,7 +349,7 @@ static VALUE
280
349
  gid_new(int argc, VALUE *argv, VALUE self)
281
350
  {
282
351
  RgeoipDatabase *gid;
283
- VALUE filename, flags;
352
+ VALUE filename, flags, encoding;
284
353
 
285
354
  Data_Get_Struct(self, RgeoipDatabase, gid);
286
355
  if (gid == NULL)
@@ -290,9 +359,9 @@ gid_new(int argc, VALUE *argv, VALUE self)
290
359
  DATA_PTR(self) = gid;
291
360
  }
292
361
 
293
- rb_scan_args(argc, argv, "11", &filename, &flags);
362
+ rb_scan_args(argc, argv, "12", &filename, &flags, &encoding);
294
363
 
295
- filename = StringValue(filename);
364
+ filename = rb_funcall(filename, i_to_s, 0);
296
365
 
297
366
  gid->ptr = GeoIP_open(RSTRING_PTR(filename),
298
367
  GEOIP_MEMORY_CACHE | GEOIP_CHECK_CACHE | GEOIP_MMAP_CACHE);
@@ -301,6 +370,14 @@ gid_new(int argc, VALUE *argv, VALUE self)
301
370
  rb_raise(rb_eRuntimeError, "Problem opening database");
302
371
  }
303
372
 
373
+ #ifdef HAVE_RUBY_ENCODING_H
374
+ if (NIL_P(encoding))
375
+ {
376
+ encoding = rb_str_new2("ISO-8859-1");
377
+ }
378
+ gid_set_encoding(self, encoding);
379
+ #endif
380
+
304
381
  return self;
305
382
  }
306
383
 
@@ -337,15 +414,15 @@ gid_country(VALUE self, VALUE addr_or_host)
337
414
  result = rb_hash_new();
338
415
  if (GeoIP_code_by_id(id))
339
416
  {
340
- rb_hash_sset(result, rgeoip_symbols[RS_CODE], rb_str_freeze(rb_str_new2(GeoIP_code_by_id(id))));
417
+ rb_hash_sset(result, rgeoip_symbols[RS_CODE], gid_enc_str(gid, GeoIP_code_by_id(id)));
341
418
  }
342
419
  if (GeoIP_code3_by_id(id))
343
420
  {
344
- rb_hash_sset(result, rgeoip_symbols[RS_CODE3], rb_str_freeze(rb_str_new2(GeoIP_code3_by_id(id))));
421
+ rb_hash_sset(result, rgeoip_symbols[RS_CODE3], gid_enc_str(gid, GeoIP_code3_by_id(id)));
345
422
  }
346
423
  if (GeoIP_name_by_id(id))
347
424
  {
348
- rb_hash_sset(result, rgeoip_symbols[RS_NAME], rb_str_freeze(rb_str_new2(GeoIP_name_by_id(id))));
425
+ rb_hash_sset(result, rgeoip_symbols[RS_NAME], gid_enc_str(gid, GeoIP_name_by_id(id)));
349
426
  }
350
427
 
351
428
  return result;
@@ -384,27 +461,27 @@ gid_city(VALUE self, VALUE addr_or_host)
384
461
  result = rb_hash_new();
385
462
  if (record->country_code)
386
463
  {
387
- rb_hash_sset(result, rgeoip_symbols[RS_CODE], rb_str_freeze(rb_str_new2(record->country_code)));
464
+ rb_hash_sset(result, rgeoip_symbols[RS_CODE], gid_enc_str(gid, record->country_code));
388
465
  }
389
466
  if (record->country_code3)
390
467
  {
391
- rb_hash_sset(result, rgeoip_symbols[RS_CODE3], rb_str_freeze(rb_str_new2(record->country_code3)));
468
+ rb_hash_sset(result, rgeoip_symbols[RS_CODE3], gid_enc_str(gid, record->country_code3));
392
469
  }
393
470
  if (record->country_name)
394
471
  {
395
- rb_hash_sset(result, rgeoip_symbols[RS_NAME], rb_str_freeze(rb_str_new2(record->country_name)));
472
+ rb_hash_sset(result, rgeoip_symbols[RS_NAME], gid_enc_str(gid, record->country_name));
396
473
  }
397
474
  if (record->region)
398
475
  {
399
- rb_hash_sset(result, rgeoip_symbols[RS_REGION], rb_str_freeze(rb_str_new2(record->region)));
476
+ rb_hash_sset(result, rgeoip_symbols[RS_REGION], gid_enc_str(gid, record->region));
400
477
  }
401
478
  if (record->city)
402
479
  {
403
- rb_hash_sset(result, rgeoip_symbols[RS_CITY], rb_str_freeze(rb_str_new2(record->city)));
480
+ rb_hash_sset(result, rgeoip_symbols[RS_CITY], gid_enc_str(gid, record->city));
404
481
  }
405
482
  if (record->postal_code)
406
483
  {
407
- rb_hash_sset(result, rgeoip_symbols[RS_POSTAL_CODE], rb_str_freeze(rb_str_new2(record->postal_code)));
484
+ rb_hash_sset(result, rgeoip_symbols[RS_POSTAL_CODE], gid_enc_str(gid, record->postal_code));
408
485
  }
409
486
  rb_hash_sset(result, rgeoip_symbols[RS_LATITUDE], rb_float_new((double)record->latitude));
410
487
  rb_hash_sset(result, rgeoip_symbols[RS_LONGITUDE], rb_float_new((double)record->longitude));
@@ -415,6 +492,69 @@ gid_city(VALUE self, VALUE addr_or_host)
415
492
  return result;
416
493
  }
417
494
 
495
+ #ifdef HAVE_RUBY_ENCODING_H
496
+ static VALUE
497
+ gid_set_encoding(VALUE self, VALUE enc)
498
+ {
499
+ RgeoipDatabase *gid;
500
+ rb_encoding *rb_enc;
501
+ Data_Get_Struct(self, RgeoipDatabase, gid);
502
+
503
+ rb_enc = rb_to_encoding(enc);
504
+ if (strcmp(rb_enc_name(rb_enc), "ISO-8859-1") == 0)
505
+ {
506
+ GeoIP_set_charset(gid->ptr, GEOIP_CHARSET_ISO_8859_1);
507
+ }
508
+ else if (strcmp(rb_enc_name(rb_enc), "UTF-8") == 0)
509
+ {
510
+ GeoIP_set_charset(gid->ptr, GEOIP_CHARSET_UTF8);
511
+ }
512
+ else
513
+ {
514
+ rb_raise(rb_eRuntimeError, "Unsupported Encoding");
515
+ }
516
+ return gid_get_encoding(self);
517
+ }
518
+ #endif
519
+
520
+ #ifdef HAVE_RUBY_ENCODING_H
521
+ static VALUE
522
+ gid_get_encoding(VALUE self)
523
+ {
524
+ RgeoipDatabase *gid;
525
+ rb_encoding *encoding;
526
+ Data_Get_Struct(self, RgeoipDatabase, gid);
527
+
528
+ encoding = charset2encoding(GeoIP_charset(gid->ptr));
529
+ if (encoding == NULL)
530
+ {
531
+ rb_raise(rb_eRuntimeError, "Unknown charset");
532
+ }
533
+
534
+ return rb_enc_from_encoding(encoding);
535
+ }
536
+ #endif
537
+
538
+ #ifdef HAVE_RUBY_ENCODING_H
539
+ static VALUE
540
+ gid_enc_str(RgeoipDatabase *gid, const char* str)
541
+ {
542
+ rb_encoding *internal_encoding = rb_default_internal_encoding();
543
+ VALUE val = rb_enc_str_new(str, strlen(str),
544
+ charset2encoding(GeoIP_charset(gid->ptr)));
545
+ if (internal_encoding) {
546
+ val = rb_str_export_to_enc(val, internal_encoding);
547
+ }
548
+ return rb_str_freeze(val);
549
+ }
550
+ #else
551
+ static VALUE
552
+ gid_enc_str(RgeoipDatabase *gid, const char* str)
553
+ {
554
+ return rb_str_freeze(rb_str_new2(str));
555
+ }
556
+ #endif
557
+
418
558
  /* -------- */
419
559
 
420
560
  static GeoIP_id_by
@@ -465,6 +605,25 @@ rb_hash_sset(VALUE hash, VALUE key, VALUE value)
465
605
  return rb_hash_aset(hash, key, value);
466
606
  }
467
607
 
608
+ #ifdef HAVE_RUBY_ENCODING_H
609
+ static rb_encoding*
610
+ charset2encoding(GeoIPCharset charset)
611
+ {
612
+ if (charset == GEOIP_CHARSET_ISO_8859_1)
613
+ {
614
+ return enc_iso_8859_1;
615
+ }
616
+ else if (charset == GEOIP_CHARSET_UTF8)
617
+ {
618
+ return enc_utf8;
619
+ }
620
+ else
621
+ {
622
+ return NULL;
623
+ }
624
+ }
625
+ #endif
626
+
468
627
  /* -------- */
469
628
 
470
629
  void
@@ -476,12 +635,20 @@ Init_rgeoip(void)
476
635
  rb_define_method(rb_cRgeoip, "open", gi_open, 1);
477
636
  rb_define_method(rb_cRgeoip, "country", gi_country, 1);
478
637
  rb_define_method(rb_cRgeoip, "city", gi_city, 1);
638
+ #ifdef HAVE_RUBY_ENCODING_H
639
+ rb_define_method(rb_cRgeoip, "encoding=", gi_set_encoding, 1);
640
+ rb_define_method(rb_cRgeoip, "encoding", gi_get_encoding, 0);
641
+ #endif
479
642
 
480
643
  rb_cRgeoipDatabase = rb_define_class_under(rb_cRgeoip, "Database", rb_cObject);
481
644
  rb_define_alloc_func(rb_cRgeoipDatabase, gid_alloc);
482
645
  rb_define_method(rb_cRgeoipDatabase, "initialize", gid_new, -1);
483
646
  rb_define_method(rb_cRgeoipDatabase, "country", gid_country, 1);
484
647
  rb_define_method(rb_cRgeoipDatabase, "city", gid_city, 1);
648
+ #ifdef HAVE_RUBY_ENCODING_H
649
+ rb_define_method(rb_cRgeoipDatabase, "encoding=", gid_set_encoding, 1);
650
+ rb_define_method(rb_cRgeoipDatabase, "encoding", gid_get_encoding, 0);
651
+ #endif
485
652
 
486
653
  rgeoip_symbols[RS_CODE] = ID2SYM(rb_intern("code"));
487
654
  rgeoip_symbols[RS_CODE3] = ID2SYM(rb_intern("code3"));
@@ -493,4 +660,11 @@ Init_rgeoip(void)
493
660
  rgeoip_symbols[RS_LONGITUDE] = ID2SYM(rb_intern("longitude"));
494
661
  rgeoip_symbols[RS_DMA_CODE] = ID2SYM(rb_intern("dma_code"));
495
662
  rgeoip_symbols[RS_AREA_CODE] = ID2SYM(rb_intern("area_code"));
663
+
664
+ i_to_s = rb_intern("to_s");
665
+
666
+ #ifdef HAVE_RUBY_ENCODING_H
667
+ enc_utf8 = rb_utf8_encoding();
668
+ enc_iso_8859_1 = rb_enc_find("ISO-8859-1");
669
+ #endif
496
670
  }
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{rgeoip}
8
- s.version = "0.0.2"
8
+ s.version = "0.0.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["miyucy"]
12
- s.date = %q{2011-01-26}
12
+ s.date = %q{2011-03-23}
13
13
  s.description = %q{alternative libGeoIP binding for Ruby}
14
14
  s.email = %q{miyucy@gmail.com}
15
15
  s.extensions = ["ext/extconf.rb"]
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
19
19
  ]
20
20
  s.files = [
21
21
  ".document",
22
+ ".gemtest",
22
23
  "Gemfile",
23
24
  "Gemfile.lock",
24
25
  "LICENSE.txt",
@@ -27,24 +28,28 @@ Gem::Specification.new do |s|
27
28
  "VERSION",
28
29
  "ext/extconf.rb",
29
30
  "ext/rgeoip.c",
31
+ "lib/rack/rgeoip.rb",
30
32
  "rgeoip.gemspec",
33
+ "test/data/GeoIP.dat",
34
+ "test/data/GeoLiteCity.dat",
31
35
  "test/helper.rb",
36
+ "test/test_rack_rgeoip_lookup.rb",
32
37
  "test/test_rgeoip.rb",
33
38
  "test/test_rgeoip_database.rb"
34
39
  ]
35
40
  s.homepage = %q{http://github.com/miyucy/rgeoip}
36
41
  s.licenses = ["LGPL"]
37
42
  s.require_paths = ["lib"]
38
- s.rubygems_version = %q{1.3.7}
43
+ s.rubygems_version = %q{1.5.2}
39
44
  s.summary = %q{alternative libGeoIP binding for Ruby}
40
45
  s.test_files = [
41
46
  "test/helper.rb",
47
+ "test/test_rack_rgeoip_lookup.rb",
42
48
  "test/test_rgeoip.rb",
43
49
  "test/test_rgeoip_database.rb"
44
50
  ]
45
51
 
46
52
  if s.respond_to? :specification_version then
47
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
48
53
  s.specification_version = 3
49
54
 
50
55
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
@@ -53,12 +58,14 @@ Gem::Specification.new do |s|
53
58
  s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
54
59
  s.add_development_dependency(%q<rcov>, [">= 0"])
55
60
  s.add_development_dependency(%q<ZenTest>, [">= 0"])
61
+ s.add_development_dependency(%q<rack>, [">= 0"])
56
62
  else
57
63
  s.add_dependency(%q<yard>, ["~> 0.6.0"])
58
64
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
59
65
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
60
66
  s.add_dependency(%q<rcov>, [">= 0"])
61
67
  s.add_dependency(%q<ZenTest>, [">= 0"])
68
+ s.add_dependency(%q<rack>, [">= 0"])
62
69
  end
63
70
  else
64
71
  s.add_dependency(%q<yard>, ["~> 0.6.0"])
@@ -66,6 +73,7 @@ Gem::Specification.new do |s|
66
73
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
67
74
  s.add_dependency(%q<rcov>, [">= 0"])
68
75
  s.add_dependency(%q<ZenTest>, [">= 0"])
76
+ s.add_dependency(%q<rack>, [">= 0"])
69
77
  end
70
78
  end
71
79
 
@@ -28,7 +28,7 @@ class TestRgeoip < Test::Unit::TestCase
28
28
  Rgeoip.new.open Tempfile.new("rgeoip").path
29
29
  }
30
30
 
31
- assert_raise(TypeError) {
31
+ assert_raise(RuntimeError) {
32
32
  Rgeoip.new.open nil
33
33
  }
34
34
  end
@@ -44,7 +44,7 @@ class TestRgeoip < Test::Unit::TestCase
44
44
  Rgeoip.new.open [Tempfile.new("rgeoip").path, Tempfile.new("rgeoip").path]
45
45
  }
46
46
 
47
- assert_raise(TypeError) {
47
+ assert_raise(RuntimeError) {
48
48
  Rgeoip.new.open [nil]
49
49
  }
50
50
  end
@@ -63,6 +63,46 @@ class TestRgeoip < Test::Unit::TestCase
63
63
  assert_equal("Tokyo", rgeoip.city("202.12.27.33")[:city])
64
64
  end
65
65
 
66
+ def test_get_encoding
67
+ assert_equal(Encoding, rgeoip.encoding.class)
68
+ end if defined? Encoding
69
+
70
+ def test_set_invalid_encoding
71
+ @rgeoip = rgeoip
72
+ encoding = @rgeoip.encoding
73
+
74
+ assert_raise(RuntimeError) {
75
+ @rgeoip.encoding = Encoding.find("Shift_JIS")
76
+ }
77
+ assert_raise(RuntimeError) {
78
+ @rgeoip.encoding = "Shift_JIS"
79
+ }
80
+
81
+ assert_equal(encoding, @rgeoip.encoding)
82
+ end if defined? Encoding
83
+
84
+ def test_set_encoding_iso_8859_1
85
+ @rgeoip = rgeoip
86
+ enc_iso8859_1 = Encoding.find("ISO-8859-1")
87
+
88
+ @rgeoip.encoding = "ISO-8859-1"
89
+ assert_equal(enc_iso8859_1, @rgeoip.encoding)
90
+
91
+ @rgeoip.encoding = enc_iso8859_1
92
+ assert_equal(enc_iso8859_1, @rgeoip.encoding)
93
+ end if defined? Encoding
94
+
95
+ def test_set_encoding_utf8
96
+ @rgeoip = rgeoip
97
+ enc_utf8 = Encoding.find("UTF-8")
98
+
99
+ @rgeoip.encoding = "UTF-8"
100
+ assert_equal(enc_utf8, @rgeoip.encoding)
101
+
102
+ @rgeoip.encoding = enc_utf8
103
+ assert_equal(enc_utf8, @rgeoip.encoding)
104
+ end if defined? Encoding
105
+
66
106
  private
67
107
 
68
108
  def paths
@@ -72,6 +72,68 @@ class TestRgeoipDatabase < Test::Unit::TestCase
72
72
  assert_equal(nil, city_db.city("1.2.3.4.5"))
73
73
  end
74
74
 
75
+ def test_get_encoding
76
+ assert_equal(Encoding, city_db.encoding.class)
77
+ end if defined? Encoding
78
+
79
+ def test_set_invalid_encoding
80
+ @city_db = city_db
81
+ encoding = @city_db.encoding
82
+
83
+ assert_raise(RuntimeError) {
84
+ @city_db.encoding = Encoding.find("Shift_JIS")
85
+ }
86
+
87
+ assert_raise(RuntimeError) {
88
+ @city_db.encoding = "Shift_JIS"
89
+ }
90
+
91
+ assert_equal(encoding, @city_db.encoding)
92
+ end if defined? Encoding
93
+
94
+ def test_set_encoding_utf8
95
+ @city_db = city_db
96
+ enc_utf8 = Encoding.find("UTF-8")
97
+
98
+ @city_db.encoding = "UTF-8"
99
+ assert_equal(enc_utf8, @city_db.encoding)
100
+
101
+ @city_db.encoding = enc_utf8
102
+ assert_equal(enc_utf8, @city_db.encoding)
103
+ end if defined? Encoding
104
+
105
+ def test_set_encoding_iso_8859_1
106
+ @city_db = city_db
107
+ enc_iso8859_1 = Encoding.find("ISO-8859-1")
108
+
109
+ @city_db.encoding = "ISO-8859-1"
110
+ assert_equal(enc_iso8859_1, @city_db.encoding)
111
+
112
+ @city_db.encoding = enc_iso8859_1
113
+ assert_equal(enc_iso8859_1, @city_db.encoding)
114
+ end if defined? Encoding
115
+
116
+ def test_encoding_utf8
117
+ @city_db = city_db
118
+ @city_db.encoding = "UTF-8"
119
+ assert_equal(@city_db.encoding, @city_db.city("m.root-servers.net")[:city].encoding)
120
+ end if defined? Encoding
121
+
122
+ def test_encoding_utf8
123
+ @city_db = city_db
124
+ @city_db.encoding = "ISO-8859-1"
125
+ assert_equal(@city_db.encoding, @city_db.city("m.root-servers.net")[:city].encoding)
126
+ end if defined? Encoding
127
+
128
+ def test_default_internal
129
+ di = Encoding.default_internal
130
+
131
+ Encoding.default_internal = "Shift_JIS"
132
+ assert_equal(Encoding.default_internal, city_db.city("m.root-servers.net")[:city].encoding)
133
+
134
+ Encoding.default_internal = di
135
+ end if defined? Encoding
136
+
75
137
  private
76
138
 
77
139
  def paths
metadata CHANGED
@@ -1,13 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rgeoip
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
5
4
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 3
10
- version: 0.0.3
5
+ version: 0.0.4
11
6
  platform: ruby
12
7
  authors:
13
8
  - miyucy
@@ -15,99 +10,75 @@ autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
12
 
18
- date: 2011-02-18 00:00:00 +09:00
13
+ date: 2011-03-23 00:00:00 +09:00
19
14
  default_executable:
20
15
  dependencies:
21
16
  - !ruby/object:Gem::Dependency
22
- type: :development
17
+ name: yard
23
18
  requirement: &id001 !ruby/object:Gem::Requirement
24
19
  none: false
25
20
  requirements:
26
21
  - - ~>
27
22
  - !ruby/object:Gem::Version
28
- hash: 7
29
- segments:
30
- - 0
31
- - 6
32
- - 0
33
23
  version: 0.6.0
34
- name: yard
35
- version_requirements: *id001
24
+ type: :development
36
25
  prerelease: false
26
+ version_requirements: *id001
37
27
  - !ruby/object:Gem::Dependency
38
- type: :development
28
+ name: bundler
39
29
  requirement: &id002 !ruby/object:Gem::Requirement
40
30
  none: false
41
31
  requirements:
42
32
  - - ~>
43
33
  - !ruby/object:Gem::Version
44
- hash: 23
45
- segments:
46
- - 1
47
- - 0
48
- - 0
49
34
  version: 1.0.0
50
- name: bundler
51
- version_requirements: *id002
35
+ type: :development
52
36
  prerelease: false
37
+ version_requirements: *id002
53
38
  - !ruby/object:Gem::Dependency
54
- type: :development
39
+ name: jeweler
55
40
  requirement: &id003 !ruby/object:Gem::Requirement
56
41
  none: false
57
42
  requirements:
58
43
  - - ~>
59
44
  - !ruby/object:Gem::Version
60
- hash: 7
61
- segments:
62
- - 1
63
- - 5
64
- - 2
65
45
  version: 1.5.2
66
- name: jeweler
67
- version_requirements: *id003
46
+ type: :development
68
47
  prerelease: false
48
+ version_requirements: *id003
69
49
  - !ruby/object:Gem::Dependency
70
- type: :development
50
+ name: rcov
71
51
  requirement: &id004 !ruby/object:Gem::Requirement
72
52
  none: false
73
53
  requirements:
74
54
  - - ">="
75
55
  - !ruby/object:Gem::Version
76
- hash: 3
77
- segments:
78
- - 0
79
56
  version: "0"
80
- name: rcov
81
- version_requirements: *id004
57
+ type: :development
82
58
  prerelease: false
59
+ version_requirements: *id004
83
60
  - !ruby/object:Gem::Dependency
84
- type: :development
61
+ name: ZenTest
85
62
  requirement: &id005 !ruby/object:Gem::Requirement
86
63
  none: false
87
64
  requirements:
88
65
  - - ">="
89
66
  - !ruby/object:Gem::Version
90
- hash: 3
91
- segments:
92
- - 0
93
67
  version: "0"
94
- name: ZenTest
95
- version_requirements: *id005
68
+ type: :development
96
69
  prerelease: false
70
+ version_requirements: *id005
97
71
  - !ruby/object:Gem::Dependency
98
- type: :development
72
+ name: rack
99
73
  requirement: &id006 !ruby/object:Gem::Requirement
100
74
  none: false
101
75
  requirements:
102
76
  - - ">="
103
77
  - !ruby/object:Gem::Version
104
- hash: 3
105
- segments:
106
- - 0
107
78
  version: "0"
108
- name: rack
109
- version_requirements: *id006
79
+ type: :development
110
80
  prerelease: false
81
+ version_requirements: *id006
111
82
  description: alternative libGeoIP binding for Ruby
112
83
  email: miyucy@gmail.com
113
84
  executables: []
@@ -150,7 +121,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
150
121
  requirements:
151
122
  - - ">="
152
123
  - !ruby/object:Gem::Version
153
- hash: 3
124
+ hash: 2012554838246895694
154
125
  segments:
155
126
  - 0
156
127
  version: "0"
@@ -159,9 +130,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
159
130
  requirements:
160
131
  - - ">="
161
132
  - !ruby/object:Gem::Version
162
- hash: 3
163
- segments:
164
- - 0
165
133
  version: "0"
166
134
  requirements: []
167
135