machiawase 0.3.1 → 0.3.2

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/bin/machiawase CHANGED
@@ -3,4 +3,4 @@
3
3
  require 'rubygems'
4
4
  require 'machiawase'
5
5
 
6
- puts Machiawase.where?(ARGV).address
6
+ puts Machiawase.where(*ARGV).address
data/lib/machiawase.rb CHANGED
@@ -7,78 +7,87 @@ require 'open-uri'
7
7
  require 'machiawase/place'
8
8
  require 'machiawase/version'
9
9
 
10
- class Machiawase
11
- attr_reader :place, :places, :lat, :lon, :address, :near_station
10
+ module Machiawase
12
11
 
13
- def initialize(*places)
14
- @place = nil
15
- @places = places
16
- end
12
+ def self.where(*argv)
13
+ require 'optparse'
14
+ opt = OptionParser.new do |opt|
15
+ opt.version = VERSION
16
+ end
17
+ addresses = opt.parse(argv)
17
18
 
18
- def self.where?(*addresses)
19
19
  places = Array.new
20
20
  addresses.each do |address|
21
21
  g = Place.geocode(address)
22
22
  places << Place.new(g['lat'], g['lon'])
23
23
  end
24
- m = Machiawase.new(*places)
24
+ m = Rendezvous.new(*places)
25
25
  m.place
26
26
  end
27
27
 
28
- def place
29
- @place ||= middle_of(*@places)
30
- end
28
+ class Rendezvous
29
+ attr_reader :place, :places, :lat, :lon, :address, :near_station
31
30
 
32
- def lat
33
- @place ||= middle_of(*@places)
34
- @place.lat
35
- end
31
+ def initialize(*places)
32
+ @place = nil
33
+ @places = places
34
+ end
36
35
 
37
- def lon
38
- @place ||= middle_of(*@places)
39
- @place.lon
40
- end
36
+ def place
37
+ @place ||= middle_of(*@places)
38
+ end
41
39
 
42
- def address
43
- @place ||= middle_of(*@places)
44
- @place.address
45
- end
40
+ def lat
41
+ @place ||= middle_of(*@places)
42
+ @place.lat
43
+ end
46
44
 
47
- def near_station
48
- @place ||= middle_of(*@places)
49
- @place.near_station
50
- end
45
+ def lon
46
+ @place ||= middle_of(*@places)
47
+ @place.lon
48
+ end
51
49
 
52
- def to_h
53
- h = Hash.new
54
- @places.each_with_index do |place, i|
55
- h.store("place#{i}", place.to_h)
50
+ def address
51
+ @place ||= middle_of(*@places)
52
+ @place.address
56
53
  end
57
54
 
58
- @place ||= middle_of(*@places)
59
- h.store("machiawase", @place.to_h)
60
- end
55
+ def near_station
56
+ @place ||= middle_of(*@places)
57
+ @place.near_station
58
+ end
61
59
 
62
- def to_json
63
- JSON.pretty_generate(to_h)
64
- end
60
+ def to_h
61
+ h = Hash.new
62
+ @places.each_with_index do |place, i|
63
+ h.store("place#{i}", place.to_h)
64
+ end
65
65
 
66
- private
66
+ @place ||= middle_of(*@places)
67
+ h.store("machiawase", @place.to_h)
68
+ end
67
69
 
68
- def middle_of(*places)
69
- c = centroid(*places)
70
- @place = Place.new(c[0], c[1])
71
- end
70
+ def to_json
71
+ JSON.pretty_generate(to_h)
72
+ end
72
73
 
73
- def centroid(*places)
74
- x_sum = 0
75
- y_sum = 0
74
+ private
76
75
 
77
- places.each do |p|
78
- x_sum += p.lat
79
- y_sum += p.lon
76
+ def middle_of(*places)
77
+ c = centroid(*places)
78
+ @place = Place.new(c[0], c[1])
80
79
  end
81
80
 
82
- [x_sum/places.length.to_f, y_sum/places.length.to_f]
81
+ def centroid(*places)
82
+ x_sum = 0
83
+ y_sum = 0
84
+
85
+ places.each do |p|
86
+ x_sum += p.lat
87
+ y_sum += p.lon
88
+ end
89
+
90
+ [x_sum/places.length.to_f, y_sum/places.length.to_f]
91
+ end
83
92
  end
84
93
  end
@@ -1,4 +1,4 @@
1
- class Machiawase
1
+ module Machiawase
2
2
  class Place
3
3
  attr_reader :address, :near_station
4
4
  attr_accessor :lat, :lon
@@ -1,3 +1,3 @@
1
- class Machiawase
2
- VERSION = "0.3.1"
1
+ module Machiawase
2
+ VERSION = "0.3.2"
3
3
  end
@@ -2,6 +2,17 @@
2
2
  # -*- coding: utf-8 -*-
3
3
  require 'machiawase'
4
4
 
5
+ describe Machiawase do
6
+
7
+ describe 'where' do
8
+ context '横浜, 東京' do
9
+ it 'should be Place' do
10
+ Machiawase.where("横浜", "東京").class.should eq(Machiawase::Place)
11
+ end
12
+ end
13
+ end
14
+
15
+ end
5
16
 
6
17
  describe Machiawase::Place do
7
18
  describe ':address' do
@@ -29,17 +40,9 @@ describe Machiawase::Place do
29
40
  end
30
41
  end
31
42
 
32
- describe Machiawase do
43
+ describe Machiawase::Rendezvous do
33
44
  before do
34
- @machiawase = Machiawase.new
35
- end
36
-
37
- describe 'where?' do
38
- context '横浜, 東京' do
39
- it 'should be Place' do
40
- Machiawase.where?("横浜", "東京").class.should eq(Machiawase::Place)
41
- end
42
- end
45
+ @machiawase = Machiawase::Rendezvous.new
43
46
  end
44
47
 
45
48
  describe ":centroid" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: machiawase
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-01 00:00:00.000000000 Z
12
+ date: 2012-11-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
16
- requirement: &70209663995100 !ruby/object:Gem::Requirement
16
+ requirement: &70196166761400 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70209663995100
24
+ version_requirements: *70196166761400
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &70209663994680 !ruby/object:Gem::Requirement
27
+ requirement: &70196166760980 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70209663994680
35
+ version_requirements: *70196166760980
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: ZenTest
38
- requirement: &70209663994260 !ruby/object:Gem::Requirement
38
+ requirement: &70196166760560 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70209663994260
46
+ version_requirements: *70196166760560
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: autotest-fsevent
49
- requirement: &70209663993840 !ruby/object:Gem::Requirement
49
+ requirement: &70196166760140 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70209663993840
57
+ version_requirements: *70196166760140
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: autotest-growl
60
- requirement: &70209663993420 !ruby/object:Gem::Requirement
60
+ requirement: &70196166759720 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70209663993420
68
+ version_requirements: *70196166759720
69
69
  description: provides command line usage and library to get a middle point of plural
70
70
  points
71
71
  email: