machiawase 0.6.1 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 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