machiawase 0.3.1 → 0.3.2

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