machiawase 0.6.1 → 0.7.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c80bba1c3d117dacaf6bb3b8f5c42ec1f10c4cd8
4
- data.tar.gz: da18b527515f2c85d687bace5718653af36942dc
3
+ metadata.gz: ed2fccd7823024d5276ac4e68df305077083e462
4
+ data.tar.gz: c1ea43631c7d0eda5bd244adf5238595be62d9ce
5
5
  SHA512:
6
- metadata.gz: 96612fe73e46662259366e6e0a69821a6fbac8f914c9bbdf194a5e97bd38458b0ef89bc02d89863ff66131dbf3cfe5542cb8c4cdf6099e8d09df73c78f095a28
7
- data.tar.gz: d00b71ba67afe76d802af1a3a2813f31954092a58e740be0ba03d0779d82a65914481e306cd352802917230ef17797241c22c00e01ae3b813ff94c44bf1f9ce5
6
+ metadata.gz: ebf3253eacfbe1a3637b23dc30384c4b879483ab6de1ed9090a9e5e49f9e0f544f7cd40d4182323808fc0e0fb84b32d98c3a1e8d1274ddb07fbb48d43f0e9aee
7
+ data.tar.gz: 8e210fd00ea7a0da41a4978683a9e05d0d2170057538163bad3789c671d32892aef6f1cfce0092385afaef054def54fa8b91fa0af24e03785df142a3759a1194
data/.gitignore CHANGED
@@ -16,3 +16,4 @@ spec/reports
16
16
  test/tmp
17
17
  test/version_tmp
18
18
  tmp
19
+ .DS_Store
@@ -0,0 +1,6 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.5
4
+ - 2.4
5
+ - 2.3
6
+ - 2.2
data/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  Provides command line usage and library to get a middle point of plural points.
4
4
 
5
+ [![Build Status](https://travis-ci.org/zakuni/machiawase.png)](https://travis-ci.org/zakuni/machiawase)
6
+
5
7
  ## Installation
6
8
 
7
9
  Add this line to your application's Gemfile:
data/Rakefile CHANGED
@@ -1,2 +1,9 @@
1
1
  #!/usr/bin/env rake
2
2
  require "bundler/gem_tasks"
3
+ require "rake/testtask"
4
+
5
+ Rake::TestTask.new do |t|
6
+ t.pattern = "test/test_*.rb"
7
+ end
8
+
9
+ task :default => :test
@@ -2,6 +2,7 @@
2
2
  # -*- coding: utf-8 -*-
3
3
  require 'net/http'
4
4
  require 'json'
5
+ require 'geocoder'
5
6
  require 'msgpack'
6
7
  require 'nokogiri'
7
8
  require 'open-uri'
@@ -24,4 +25,20 @@ module Machiawase
24
25
  m = Rendezvous.new(*places)
25
26
  m.place
26
27
  end
28
+
29
+ def self.parse_proxy(proxy)
30
+ # http://user:pass@host:port のように書かれていることを想定
31
+ # パスワードに@とか入ってる場合があるので一番後ろの@でだけsplitする
32
+ rserver, raccount = (proxy || '').sub(/http:\/\//, '').reverse.split("@", 2)
33
+ server = rserver.nil? ? "" : rserver.reverse
34
+ host, port = server.split(":")
35
+ account = raccount.nil? ? "" : raccount.reverse.split(":")
36
+ user, pass = account
37
+
38
+ proxy = OpenStruct.new({
39
+ "server" => server.empty? ? nil : "http://#{server}",
40
+ "user" => user.nil? ? "" : user,
41
+ "pass" => pass.nil? ? "" : pass
42
+ })
43
+ end
27
44
  end
@@ -3,8 +3,6 @@ module Machiawase
3
3
 
4
4
  # @!attribute [r] address
5
5
  # @return [String] the address.
6
- # @!attribute [r] near_station
7
- # @return [String] the nearest station.
8
6
  # @!attribute [r] google_map_url
9
7
  # @return [String] the url of Google Map.
10
8
  # @!attribute [rw] lat
@@ -12,84 +10,59 @@ module Machiawase
12
10
  # @!attribute [rw] lon
13
11
  # @return the longitude.
14
12
  class Place
15
- attr_reader :address, :near_station, :google_map_url
13
+ include Geocoder
14
+
15
+ attr_reader :address, :google_map_url
16
16
  attr_accessor :lat, :lon
17
17
 
18
18
  def initialize(lat, lon)
19
- @lat = lat
20
- @lon = lon
21
- @doc = nil
19
+ @lat = lat
20
+ @lon = lon
22
21
  @address = nil
23
- @near_station = nil
24
22
  @google_map_url = "http://maps.google.co.jp/maps?q=#{@lat},#{@lon}&ll=#{@lat},#{@lon}&z=14&t=m&brcurrent=3,0x0:0x0,1"
25
- @proxy = Place.parse_proxy(ENV["http_proxy"])
23
+ @proxy = Machiawase.parse_proxy(ENV["http_proxy"])
24
+ Place.configure
26
25
  end
27
26
 
28
27
  def lat=(val)
29
28
  @lat = val
30
- @doc = nil
31
29
  @address = nil
32
- @near_station = nil
33
30
  end
34
31
 
35
32
  def lon=(val)
36
33
  @lon = val
37
- @doc = nil
38
34
  @address = nil
39
- @near_station = nil
40
35
  end
41
36
 
42
37
  # @return [Hash] geocode of given address.
43
38
  def self.geocode(address)
44
- baseUrl = "http://maps.google.com/maps/api/geocode/json"
45
- reqUrl = "#{baseUrl}?address=#{URI.encode(address)}&sensor=false&language=ja"
46
- proxy = parse_proxy(ENV["http_proxy"])
47
- response = open(URI.parse(reqUrl), :proxy_http_basic_authentication => [proxy.server, proxy.user, proxy.pass])
48
- status = JSON.parse(response.string)
49
- lat = status['results'][0]['geometry']['location']['lat']
50
- lon = status['results'][0]['geometry']['location']['lng']
39
+ Place.configure
40
+ lat, lon = Geocoder.coordinates(address)
51
41
  {"lat" => lat, "lon" => lon}
52
42
  rescue => exc
53
43
  p exc
54
44
  end
55
45
 
56
- def self.parse_proxy(proxy)
57
- # http://user:pass@host:port のように書かれていることを想定
58
- # パスワードに@とか入ってる場合があるので一番後ろの@でだけsplitする
59
- rserver, raccount = (proxy || '').sub(/http:\/\//, '').reverse.split("@", 2)
60
- server = rserver.nil? ? "" : rserver.reverse
61
- host, port = server.split(":")
62
- account = raccount.nil? ? "" : raccount.reverse.split(":")
63
- user, pass = account
64
-
65
- proxy = OpenStruct.new({
66
- "server" => server.empty? ? nil : "http://#{server}",
67
- "user" => user.nil? ? "" : user,
68
- "pass" => pass.nil? ? "" : pass
69
- })
46
+ def self.configure
47
+ Geocoder.configure(
48
+ :language => :ja,
49
+ :http_proxy => ENV["http_proxy"]
50
+ )
70
51
  end
71
52
 
72
53
  def address
73
- @doc ||= Nokogiri::HTML(open("http://geocode.didit.jp/reverse/?lat=#{@lat}&lon=#{@lon}", :proxy_http_basic_authentication => [@proxy.server, @proxy.user, @proxy.pass]))
74
- @address ||= @doc.xpath('//address')[0].content
54
+ Place.configure
55
+ @address ||= Geocoder.address([@lat, @lon])
75
56
  rescue => exc
76
57
  p exc
77
58
  end
78
59
 
79
- def near_station
80
- @doc ||= Nokogiri::HTML(open("http://geocode.didit.jp/reverse/?lat=#{@lat}&lon=#{@lon}", :proxy_http_basic_authentication => [@proxy.server, @proxy.user, @proxy.pass]))
81
- @near_station ||= @doc.xpath('//station1')[0].content
82
- rescue => exc
83
- p exc
84
- end
85
-
86
60
  # @return [Hash] attributes with Hash format.
87
61
  def to_h
88
62
  {
89
63
  "latitude" => @lat,
90
64
  "longitude" => @lon,
91
65
  "address" => address,
92
- "near_station" => near_station,
93
66
  "google_map" => @google_map_url
94
67
  }
95
68
  end
@@ -1,3 +1,3 @@
1
1
  module Machiawase
2
- VERSION = "0.6.1"
2
+ VERSION = "0.7.0"
3
3
  end
@@ -7,6 +7,7 @@ Gem::Specification.new do |gem|
7
7
  gem.description = %q{provides command line usage and library to get a middle point of plural points}
8
8
  gem.summary = %q{finds a middle point of plural points}
9
9
  gem.homepage = "http://zakuni.github.com/machiawase/"
10
+ gem.licenses =['MIT']
10
11
 
11
12
  gem.files = `git ls-files`.split($\)
12
13
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
@@ -15,10 +16,20 @@ Gem::Specification.new do |gem|
15
16
  gem.require_paths = ["lib"]
16
17
  gem.version = Machiawase::VERSION
17
18
 
18
- gem.add_dependency "nokogiri"
19
- gem.add_dependency "msgpack"
19
+ gem.add_dependency "geocoder", '~> 1.4'
20
+ gem.add_dependency "nokogiri", '~> 1.8'
21
+ gem.add_dependency "msgpack", '~> 1.2'
22
+ gem.add_development_dependency "bundler"
23
+ gem.add_development_dependency "rake"
24
+ gem.add_development_dependency "guard"
20
25
  gem.add_development_dependency "guard-minitest"
21
26
  gem.add_development_dependency "rb-fsevent"
22
27
  gem.add_development_dependency "minitest-reporters"
23
- gem.add_development_dependency "growl"
24
- end
28
+
29
+ if RUBY_ENGINE == 'rbx'
30
+ gem.add_dependency 'racc'
31
+ gem.add_dependency 'rubysl', '~> 2.0'
32
+ gem.add_dependency 'psych'
33
+ gem.add_dependency 'json', '~> 1.8'
34
+ end
35
+ end
@@ -1,7 +1,9 @@
1
+ require 'rubygems'
1
2
  require 'minitest/autorun'
2
3
  require 'minitest/reporters'
3
4
  require 'minitest/pride'
4
5
 
6
+ $:.unshift File.expand_path '../lib', File.dirname(__FILE__)
5
7
  require 'machiawase'
6
8
 
7
- MiniTest::Reporters.use! [MiniTest::Reporters::DefaultReporter.new, MiniTest::Reporters::GuardReporter.new]
9
+ MiniTest::Reporters.use! [MiniTest::Reporters::DefaultReporter.new]
@@ -1,9 +1,34 @@
1
1
  #!/usr/bin/env ruby
2
2
  # -*- coding: utf-8 -*-
3
- require 'test_helper'
3
+ require File.expand_path 'test_helper', File.dirname(__FILE__)
4
4
 
5
- class TestMachiawase < MiniTest::Unit::TestCase
5
+ class TestMachiawase < MiniTest::Test
6
6
  def test_where
7
7
  assert_kind_of Machiawase::Place, Machiawase.where("横浜", "東京")
8
+ assert_equal "日本、〒146-0084 東京都大田区南久が原2丁目20−10", Machiawase.where("横浜", "東京").address
9
+ end
10
+
11
+ def test_parse_proxy
12
+ assert_respond_to Machiawase, :parse_proxy
13
+
14
+ return_with_nil = Machiawase.parse_proxy(nil)
15
+ assert_kind_of OpenStruct, return_with_nil
16
+ assert_respond_to return_with_nil, :user
17
+ assert_respond_to return_with_nil, :pass
18
+
19
+ assert_equal(OpenStruct.new({"server" => "http://host:port",
20
+ "user" => "user",
21
+ "pass" => "pass"}),
22
+ Machiawase.parse_proxy("user:pass@host:port"))
23
+
24
+ assert_equal(OpenStruct.new({"server" => "http://host:port",
25
+ "user" => "",
26
+ "pass" => ""}),
27
+ Machiawase.parse_proxy("host:port"))
28
+
29
+ assert_equal(OpenStruct.new({"server" => nil,
30
+ "user" => "",
31
+ "pass" => ""}),
32
+ Machiawase.parse_proxy(nil))
8
33
  end
9
34
  end
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- coding: utf-8 -*-
3
+ require File.expand_path 'test_helper', File.dirname(__FILE__)
4
+
5
+ class TestPlace < MiniTest::Test
6
+ include Machiawase
7
+
8
+ def test_address
9
+ assert_equal "日本、神奈川県横浜市 横浜市庁舎横浜市役所", Place.new(35.4437078, 139.6380256).address
10
+ assert_nil Place.new(nil, nil).address
11
+ end
12
+
13
+ def test_geocode
14
+ assert_equal({"lat" => 35.4437078, "lon" => 139.6380256}, Place.geocode('横浜'))
15
+ assert_equal({"lat" => nil, "lon" => nil}, Place.geocode(''))
16
+ assert_equal({"lat" => nil, "lon" => nil}, Place.geocode(nil))
17
+ end
18
+
19
+ def test_to_h
20
+ assert_kind_of Hash, Place.new(0, 0).to_h
21
+ end
22
+
23
+ def test_to_json
24
+ assert_kind_of String, Place.new(0, 0).to_json
25
+ end
26
+ end
@@ -1,14 +1,22 @@
1
1
  #!/usr/bin/env ruby
2
2
  # -*- coding: utf-8 -*-
3
- require 'test_helper'
3
+ require File.expand_path 'test_helper', File.dirname(__FILE__)
4
4
 
5
- class TestRendezvous < MiniTest::Unit::TestCase
5
+ class TestRendezvous < MiniTest::Test
6
6
  include Machiawase
7
7
 
8
8
  def setup
9
9
  @rendezvous = Rendezvous.new
10
10
  end
11
11
 
12
+ def test_places
13
+ assert_kind_of Array, @rendezvous.places
14
+ end
15
+
16
+ def test_place
17
+ assert_kind_of Place, @rendezvous.place
18
+ end
19
+
12
20
  def test_centroid
13
21
  place_a = Place.new(0, 0)
14
22
  place_b = Place.new(1, 1)
metadata CHANGED
@@ -1,97 +1,139 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: machiawase
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - zakuni
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-04-04 00:00:00.000000000 Z
11
+ date: 2018-01-27 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: geocoder
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.4'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.4'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: nokogiri
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
- - - '>='
31
+ - - "~>"
18
32
  - !ruby/object:Gem::Version
19
- version: '0'
33
+ version: '1.8'
20
34
  type: :runtime
21
35
  prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
- - - '>='
38
+ - - "~>"
25
39
  - !ruby/object:Gem::Version
26
- version: '0'
40
+ version: '1.8'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: msgpack
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
- - - '>='
45
+ - - "~>"
32
46
  - !ruby/object:Gem::Version
33
- version: '0'
47
+ version: '1.2'
34
48
  type: :runtime
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
- - - '>='
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
39
67
  - !ruby/object:Gem::Version
40
68
  version: '0'
41
69
  - !ruby/object:Gem::Dependency
42
- name: guard-minitest
70
+ name: rake
43
71
  requirement: !ruby/object:Gem::Requirement
44
72
  requirements:
45
- - - '>='
73
+ - - ">="
46
74
  - !ruby/object:Gem::Version
47
75
  version: '0'
48
76
  type: :development
49
77
  prerelease: false
50
78
  version_requirements: !ruby/object:Gem::Requirement
51
79
  requirements:
52
- - - '>='
80
+ - - ">="
53
81
  - !ruby/object:Gem::Version
54
82
  version: '0'
55
83
  - !ruby/object:Gem::Dependency
56
- name: rb-fsevent
84
+ name: guard
57
85
  requirement: !ruby/object:Gem::Requirement
58
86
  requirements:
59
- - - '>='
87
+ - - ">="
60
88
  - !ruby/object:Gem::Version
61
89
  version: '0'
62
90
  type: :development
63
91
  prerelease: false
64
92
  version_requirements: !ruby/object:Gem::Requirement
65
93
  requirements:
66
- - - '>='
94
+ - - ">="
67
95
  - !ruby/object:Gem::Version
68
96
  version: '0'
69
97
  - !ruby/object:Gem::Dependency
70
- name: minitest-reporters
98
+ name: guard-minitest
71
99
  requirement: !ruby/object:Gem::Requirement
72
100
  requirements:
73
- - - '>='
101
+ - - ">="
74
102
  - !ruby/object:Gem::Version
75
103
  version: '0'
76
104
  type: :development
77
105
  prerelease: false
78
106
  version_requirements: !ruby/object:Gem::Requirement
79
107
  requirements:
80
- - - '>='
108
+ - - ">="
81
109
  - !ruby/object:Gem::Version
82
110
  version: '0'
83
111
  - !ruby/object:Gem::Dependency
84
- name: growl
112
+ name: rb-fsevent
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: minitest-reporters
85
127
  requirement: !ruby/object:Gem::Requirement
86
128
  requirements:
87
- - - '>='
129
+ - - ">="
88
130
  - !ruby/object:Gem::Version
89
131
  version: '0'
90
132
  type: :development
91
133
  prerelease: false
92
134
  version_requirements: !ruby/object:Gem::Requirement
93
135
  requirements:
94
- - - '>='
136
+ - - ">="
95
137
  - !ruby/object:Gem::Version
96
138
  version: '0'
97
139
  description: provides command line usage and library to get a middle point of plural
@@ -103,7 +145,8 @@ executables:
103
145
  extensions: []
104
146
  extra_rdoc_files: []
105
147
  files:
106
- - .gitignore
148
+ - ".gitignore"
149
+ - ".travis.yml"
107
150
  - Gemfile
108
151
  - Guardfile
109
152
  - LICENSE
@@ -115,12 +158,13 @@ files:
115
158
  - lib/machiawase/rendezvous.rb
116
159
  - lib/machiawase/version.rb
117
160
  - machiawase.gemspec
118
- - test/machiawase/test_place.rb
119
- - test/machiawase/test_rendezvous.rb
120
161
  - test/test_helper.rb
121
162
  - test/test_machiawase.rb
163
+ - test/test_place.rb
164
+ - test/test_rendezvous.rb
122
165
  homepage: http://zakuni.github.com/machiawase/
123
- licenses: []
166
+ licenses:
167
+ - MIT
124
168
  metadata: {}
125
169
  post_install_message:
126
170
  rdoc_options: []
@@ -128,23 +172,22 @@ require_paths:
128
172
  - lib
129
173
  required_ruby_version: !ruby/object:Gem::Requirement
130
174
  requirements:
131
- - - '>='
175
+ - - ">="
132
176
  - !ruby/object:Gem::Version
133
177
  version: '0'
134
178
  required_rubygems_version: !ruby/object:Gem::Requirement
135
179
  requirements:
136
- - - '>='
180
+ - - ">="
137
181
  - !ruby/object:Gem::Version
138
182
  version: '0'
139
183
  requirements: []
140
184
  rubyforge_project:
141
- rubygems_version: 2.0.2
185
+ rubygems_version: 2.6.13
142
186
  signing_key:
143
187
  specification_version: 4
144
188
  summary: finds a middle point of plural points
145
189
  test_files:
146
- - test/machiawase/test_place.rb
147
- - test/machiawase/test_rendezvous.rb
148
190
  - test/test_helper.rb
149
191
  - test/test_machiawase.rb
150
- has_rdoc:
192
+ - test/test_place.rb
193
+ - test/test_rendezvous.rb
@@ -1,43 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # -*- coding: utf-8 -*-
3
- require 'test_helper'
4
-
5
- class TestPlace < MiniTest::Unit::TestCase
6
- include Machiawase
7
-
8
- def test_address
9
- assert_equal Place.new(35.4437078, 139.6380256).address, "神奈川県横浜市中区真砂町1丁目9"
10
- end
11
-
12
- def test_geocode
13
- assert_equal({"lat" => 35.4437078, "lon" => 139.6380256}, Place.geocode('横浜'))
14
- end
15
-
16
- def test_near_station
17
- assert_equal Place.new(35.4437978, 139.6380256).near_station, "関内駅"
18
- end
19
-
20
- def test_parse_proxy
21
- assert_respond_to Place, :parse_proxy
22
-
23
- return_with_nil = Place.parse_proxy(nil)
24
- assert_kind_of OpenStruct, return_with_nil
25
- assert_respond_to return_with_nil, :user
26
- assert_respond_to return_with_nil, :pass
27
-
28
- assert_equal(OpenStruct.new({"server" => "http://host:port",
29
- "user" => "user",
30
- "pass" => "pass"}),
31
- Place.parse_proxy("user:pass@host:port"))
32
-
33
- assert_equal(OpenStruct.new({"server" => "http://host:port",
34
- "user" => "",
35
- "pass" => ""}),
36
- Place.parse_proxy("host:port"))
37
-
38
- assert_equal(OpenStruct.new({"server" => nil,
39
- "user" => "",
40
- "pass" => ""}),
41
- Place.parse_proxy(nil))
42
- end
43
- end