ymaps 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,23 @@
1
+ ## MAC OS
2
+ .DS_Store
3
+
4
+ ## TEXTMATE
5
+ *.tmproj
6
+ tmtags
7
+
8
+ ## EMACS
9
+ *~
10
+ \#*
11
+ .\#*
12
+
13
+ ## VIM
14
+ *.swp
15
+
16
+ ## PROJECT::GENERAL
17
+ coverage
18
+ rdoc
19
+ doc
20
+ pkg
21
+ .yardoc
22
+
23
+ ## PROJECT::SPECIFIC
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
data/Rakefile CHANGED
@@ -1,24 +1,5 @@
1
- require 'rubygems'
2
- require 'rake'
3
-
4
- begin
5
- require 'jeweler'
6
- Jeweler::Tasks.new do |gem|
7
- gem.name = 'ymaps'
8
- gem.summary = %Q{Helpers for using YMaps}
9
- gem.description = %Q{Different helpers for generating YMapsML, using YMaps widgets and geocoding via Yandex.Maps}
10
- gem.email = 'rotuka@rotuka.com'
11
- gem.homepage = 'http://github.com/rotuka/ymaps'
12
- gem.authors = ['Alexander Semyonov']
13
- gem.add_development_dependency 'shoulda', '>= 0'
14
- gem.add_development_dependency 'yard', '>= 0'
15
- gem.add_dependency 'geokit', '1.5.0'
16
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
17
- end
18
- Jeweler::GemcutterTasks.new
19
- rescue LoadError
20
- puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
21
- end
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
22
3
 
23
4
  require 'rake/testtask'
24
5
  Rake::TestTask.new(:test) do |test|
@@ -46,12 +27,9 @@ task :default => :test
46
27
 
47
28
  begin
48
29
  require 'yard'
49
- YARD::Rake::YardocTask.new
30
+ YARD::Rake::YardocTask.new(:doc)
50
31
  rescue LoadError
51
- task :yardoc do
32
+ task :doc do
52
33
  abort "YARD is not available. In order to run yardoc, you must: sudo gem install yard"
53
34
  end
54
35
  end
55
-
56
- task :rdoc => :yard
57
- task :doc => :yard
@@ -10,15 +10,25 @@ module Geokit
10
10
  "#{lng} #{lat}"
11
11
  end
12
12
 
13
- def ymaps_lnglat
13
+ def gml_lnglat
14
14
  "#{lng},#{lat}"
15
15
  end
16
16
 
17
- def ymaps_lnglat=(lnglat)
17
+ def gml_lnglat=(lnglat)
18
18
  self.lng, self.lat = lnglat[0], lnglat[1]
19
19
  end
20
20
  end
21
21
 
22
+ class Bounds
23
+ def lower
24
+ sw
25
+ end
26
+
27
+ def upper
28
+ ne
29
+ end
30
+ end
31
+
22
32
  class GeoLoc
23
33
  attr_accessor :kind
24
34
  attr_writer :street_number, :street_name
@@ -88,7 +98,7 @@ module Geokit
88
98
 
89
99
  def self.do_reverse_geocode(latlng)
90
100
  latlng = LatLng.normalize(latlng)
91
- call_geocoder_service(latlng.ymaps_lnglat) || GeoLoc.new
101
+ call_geocoder_service(latlng.gml_lnglat) || GeoLoc.new
92
102
  end
93
103
 
94
104
  def self.do_geocode(address, options = {})
@@ -125,7 +135,7 @@ module Geokit
125
135
  res.provider = 'yandex'
126
136
 
127
137
  # basics
128
- res.ymaps_lnglat = doc.elements['.//Point/pos'].text.to_s.split(' ')
138
+ res.gml_lnglat = doc.elements['.//Point/pos'].text.to_s.split(' ')
129
139
 
130
140
  # extended -- false if not available
131
141
  res.full_address = doc.elements['.//GeocoderMetaData/text'].try(:text)
@@ -144,8 +154,8 @@ module Geokit
144
154
 
145
155
  if suggested_bounds = doc.elements['.//boundedBy']
146
156
  res.suggested_bounds = Bounds.normalize(
147
- suggested_bounds.elements['.//lowerCorner'].text.to_s.split(' '),
148
- suggested_bounds.elements['.//upperCorner'].text.to_s.split(' ')
157
+ suggested_bounds.elements['.//lowerCorner'].text.to_s.split(' ').reverse,
158
+ suggested_bounds.elements['.//upperCorner'].text.to_s.split(' ').reverse
149
159
  )
150
160
  end
151
161
 
@@ -3,15 +3,15 @@ module YMaps
3
3
  module HtmlHelper
4
4
  class StaticMapPoint < Struct.new('MapPoint', :style, :color, :size, :number, :lat, :lng)
5
5
  def to_s
6
- "#{ymaps_lnglat},#{style}#{color}#{size}#{number}"
6
+ "#{gml_lnglat},#{style}#{color}#{size}#{number}"
7
7
  end
8
8
 
9
- def ymaps_lnglat
10
- @ymaps_lnglat ||= "#{lng},#{lat}"
9
+ def gml_lnglat
10
+ @gml_lnglat ||= "#{lng},#{lat}"
11
11
  end
12
12
 
13
- def ymaps_lnglat=(latlng)
14
- @ymaps_lnglat = latlng
13
+ def gml_lnglat=(latlng)
14
+ @gml_lnglat = latlng
15
15
  end
16
16
 
17
17
  def attributes=(attrs)
@@ -65,7 +65,7 @@ module YMaps
65
65
  )
66
66
 
67
67
  collection = Array(resources).inject([]) do |result, resource|
68
- common_point.ymaps_lnglat = resource.latlng.ymaps_lnglat
68
+ common_point.gml_lnglat = resource.latlng.gml_lnglat
69
69
  common_point.number += 1
70
70
  result << common_point.to_s
71
71
  result
@@ -64,7 +64,63 @@ module YMaps
64
64
  end
65
65
  end
66
66
 
67
- class YMapsReprBuilder < Builder
67
+ class YMapsBuilder < Builder
68
+ def initialize(xml, view, ymaps_options = {})
69
+ @xml, @view, @ymaps_options = xml, view, ymaps_options
70
+ end
71
+
72
+ def collection(options = {})
73
+ GeoObjectCollection do
74
+ if options.key?(:style)
75
+ @xml.style("\##{options.delete(:style)}")
76
+ end
77
+ featureMembers { yield }
78
+ end
79
+ end
80
+
81
+ def object(object, options = {})
82
+ GeoObject do
83
+ if options.key?(:style)
84
+ @xml.style("\##{options.delete(:style)}")
85
+ end
86
+ point(object.latlng) if object.respond_to?(:latlng)
87
+ bounds(object.bounds) if object.respond_to?(:bounds)
88
+ name(options.delete(:name) { object.to_s })
89
+ yield self
90
+ end
91
+ end
92
+
93
+ def point(latlng)
94
+ Point {
95
+ pos(latlng.gml_pos)
96
+ } if latlng
97
+ end
98
+
99
+ def bounds(bounds)
100
+ boundedBy {
101
+ Envelope {
102
+ lowerCorner(bounds.lower.gml_pos)
103
+ upperCorner(bounds.upper.gml_pos)
104
+ }
105
+ } if bounds
106
+ end
107
+
108
+ def meta_data
109
+ metaDataProperty {
110
+ AnyMetaData {
111
+ yield(@xml)
112
+ }
113
+ }
114
+ end
115
+
116
+ def representation
117
+ Representation {
118
+ yield(YMapsReprBuilder.new(@xml, @view))
119
+ }
120
+ end
121
+ end
122
+
123
+ class YMapsReprBuilder < YMapsBuilder
68
124
  ACCEPTABLE_STYLES = {
69
125
  :balloon_content => [:template],
70
126
  :hint_content => [:template],
@@ -76,9 +132,8 @@ module YMaps
76
132
 
77
133
  def view(options = {})
78
134
  View {
79
- if options[:type]
80
- mapType(options[:type].to_s.upcase)
81
- end
135
+ mapType(options[:type].to_s.upcase) if options[:type]
136
+ bounds(options[:bounds]) if options[:bounds]
82
137
  yield if block_given?
83
138
  }
84
139
  end
@@ -151,51 +206,5 @@ module YMaps
151
206
  prefixed_method(:offset, :x => x, :y => y)
152
207
  end
153
208
  end
154
-
155
- class YMapsBuilder < Builder
156
- def initialize(xml, view, ymaps_options = {})
157
- @xml, @view, @ymaps_options = xml, view, ymaps_options
158
- end
159
-
160
- def collection(options = {})
161
- GeoObjectCollection do
162
- if options.key?(:style)
163
- @xml.style("\##{options.delete(:style)}")
164
- end
165
- featureMembers { yield }
166
- end
167
- end
168
-
169
- def object(object, options = {})
170
- GeoObject do
171
- if options.key?(:style)
172
- @xml.style("\##{options.delete(:style)}")
173
- end
174
- point(object.latlng)
175
- name(options.delete(:name) { object.to_s })
176
- yield self
177
- end
178
- end
179
-
180
- def point(latlng)
181
- Point {
182
- pos(latlng.gml_pos)
183
- }
184
- end
185
-
186
- def meta_data
187
- metaDataProperty {
188
- AnyMetaData {
189
- yield(@xml)
190
- }
191
- }
192
- end
193
-
194
- def representation
195
- Representation {
196
- yield(YMapsReprBuilder.new(@xml))
197
- }
198
- end
199
- end
200
209
  end
201
210
  end
@@ -0,0 +1,3 @@
1
+ module YMaps
2
+ VERSION = '0.0.4'
3
+ end
@@ -1,64 +1,26 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
1
  # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path('../lib', __FILE__)
3
+ require 'ymaps/version'
5
4
 
6
5
  Gem::Specification.new do |s|
7
- s.name = %q{ymaps}
8
- s.version = "0.0.3"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Alexander Semyonov"]
12
- s.date = %q{2011-01-27}
6
+ s.name = 'ymaps'
7
+ s.version = YMaps::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ['Alexander Semyonov']
10
+ s.email = ['al@semyonov.us']
11
+ s.homepage = 'http://github.com/rotuka/ymaps'
12
+ s.summary = %q{Helpers for using YMaps}
13
13
  s.description = %q{Different helpers for generating YMapsML, using YMaps widgets and geocoding via Yandex.Maps}
14
- s.email = %q{rotuka@rotuka.com}
15
- s.extra_rdoc_files = [
16
- "LICENSE",
17
- "README.rdoc"
18
- ]
19
- s.files = [
20
- ".document",
21
- "LICENSE",
22
- "README.rdoc",
23
- "Rakefile",
24
- "VERSION",
25
- "init.rb",
26
- "lib/geokit/geocoders/yandex_geocoder.rb",
27
- "lib/geokit/inflector.rb",
28
- "lib/ymaps.rb",
29
- "lib/ymaps/action_view.rb",
30
- "lib/ymaps/action_view/html_helper.rb",
31
- "lib/ymaps/action_view/ymapsml_helper.rb",
32
- "test/helper.rb",
33
- "test/test_ymaps.rb",
34
- "ymaps.gemspec"
35
- ]
36
- s.homepage = %q{http://github.com/rotuka/ymaps}
14
+
15
+ s.rubyforge_project = 'ymaps'
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
37
20
  s.require_paths = ["lib"]
38
- s.rubygems_version = %q{1.3.7}
39
- s.summary = %q{Helpers for using YMaps}
40
- s.test_files = [
41
- "test/helper.rb",
42
- "test/test_ymaps.rb"
43
- ]
44
21
 
45
- if s.respond_to? :specification_version then
46
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
47
- s.specification_version = 3
22
+ s.add_dependency('geokit', '= 1.5.0')
48
23
 
49
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
50
- s.add_development_dependency(%q<shoulda>, [">= 0"])
51
- s.add_development_dependency(%q<yard>, [">= 0"])
52
- s.add_runtime_dependency(%q<geokit>, ["= 1.5.0"])
53
- else
54
- s.add_dependency(%q<shoulda>, [">= 0"])
55
- s.add_dependency(%q<yard>, [">= 0"])
56
- s.add_dependency(%q<geokit>, ["= 1.5.0"])
57
- end
58
- else
59
- s.add_dependency(%q<shoulda>, [">= 0"])
60
- s.add_dependency(%q<yard>, [">= 0"])
61
- s.add_dependency(%q<geokit>, ["= 1.5.0"])
62
- end
24
+ s.add_development_dependency('shoulda', '>= 0')
25
+ s.add_development_dependency('yard', '>= 0')
63
26
  end
64
-
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 3
9
- version: 0.0.3
8
+ - 4
9
+ version: 0.0.4
10
10
  platform: ruby
11
11
  authors:
12
12
  - Alexander Semyonov
@@ -14,24 +14,26 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-01-27 00:00:00 +03:00
17
+ date: 2011-05-09 00:00:00 +06:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
- name: shoulda
21
+ name: geokit
22
22
  prerelease: false
23
23
  requirement: &id001 !ruby/object:Gem::Requirement
24
24
  none: false
25
25
  requirements:
26
- - - ">="
26
+ - - "="
27
27
  - !ruby/object:Gem::Version
28
28
  segments:
29
+ - 1
30
+ - 5
29
31
  - 0
30
- version: "0"
31
- type: :development
32
+ version: 1.5.0
33
+ type: :runtime
32
34
  version_requirements: *id001
33
35
  - !ruby/object:Gem::Dependency
34
- name: yard
36
+ name: shoulda
35
37
  prerelease: false
36
38
  requirement: &id002 !ruby/object:Gem::Requirement
37
39
  none: false
@@ -44,31 +46,31 @@ dependencies:
44
46
  type: :development
45
47
  version_requirements: *id002
46
48
  - !ruby/object:Gem::Dependency
47
- name: geokit
49
+ name: yard
48
50
  prerelease: false
49
51
  requirement: &id003 !ruby/object:Gem::Requirement
50
52
  none: false
51
53
  requirements:
52
- - - "="
54
+ - - ">="
53
55
  - !ruby/object:Gem::Version
54
56
  segments:
55
- - 1
56
- - 5
57
57
  - 0
58
- version: 1.5.0
59
- type: :runtime
58
+ version: "0"
59
+ type: :development
60
60
  version_requirements: *id003
61
61
  description: Different helpers for generating YMapsML, using YMaps widgets and geocoding via Yandex.Maps
62
- email: rotuka@rotuka.com
62
+ email:
63
+ - al@semyonov.us
63
64
  executables: []
64
65
 
65
66
  extensions: []
66
67
 
67
- extra_rdoc_files:
68
- - LICENSE
69
- - README.rdoc
68
+ extra_rdoc_files: []
69
+
70
70
  files:
71
71
  - .document
72
+ - .gitignore
73
+ - Gemfile
72
74
  - LICENSE
73
75
  - README.rdoc
74
76
  - Rakefile
@@ -80,6 +82,7 @@ files:
80
82
  - lib/ymaps/action_view.rb
81
83
  - lib/ymaps/action_view/html_helper.rb
82
84
  - lib/ymaps/action_view/ymapsml_helper.rb
85
+ - lib/ymaps/version.rb
83
86
  - test/helper.rb
84
87
  - test/test_ymaps.rb
85
88
  - ymaps.gemspec
@@ -110,11 +113,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
110
113
  version: "0"
111
114
  requirements: []
112
115
 
113
- rubyforge_project:
116
+ rubyforge_project: ymaps
114
117
  rubygems_version: 1.3.7
115
118
  signing_key:
116
119
  specification_version: 3
117
120
  summary: Helpers for using YMaps
118
- test_files:
119
- - test/helper.rb
120
- - test/test_ymaps.rb
121
+ test_files: []
122
+