wasserstand 0.0.5 → 0.0.6
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/lib/wasserstand.rb +1 -0
- data/lib/wasserstand/provider/pegel-online.rb +9 -4
- data/lib/wasserstand/version.rb +1 -1
- data/lib/wasserstand/waterway.rb +2 -2
- data/test/helper.rb +1 -0
- data/test/unit/test_waterway.rb +6 -0
- data/wasserstand.gemspec +1 -0
- metadata +18 -2
data/lib/wasserstand.rb
CHANGED
@@ -6,7 +6,6 @@ module Wasserstand
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def [](name)
|
9
|
-
doc = Nokogiri::HTML(fetch(@url), nil, 'ISO-8859-1')
|
10
9
|
results = doc.xpath(xpath_lookup(name))
|
11
10
|
|
12
11
|
case results.size
|
@@ -20,13 +19,13 @@ module Wasserstand
|
|
20
19
|
end
|
21
20
|
|
22
21
|
def all
|
23
|
-
|
22
|
+
doc.xpath(xpath_all).map{|o| mapper.map(o)}
|
24
23
|
end
|
25
24
|
|
26
25
|
def find_by_name(name_expression)
|
27
26
|
# Not the best performing way, but it gives us the ability to use the XPath 2.0 'matches' function
|
28
27
|
# which isn't supported in Nokogiri (yet).
|
29
|
-
|
28
|
+
doc.xpath(xpath_finder(name_expression), Class.new{
|
30
29
|
def matches(node_set, regex)
|
31
30
|
node_set.find_all do |node|
|
32
31
|
node.to_s.match(%r{#{regex}})
|
@@ -38,7 +37,7 @@ module Wasserstand
|
|
38
37
|
protected
|
39
38
|
|
40
39
|
def xpath_lookup(name)
|
41
|
-
"#{xpath_all}[#{name_attribute}/text() = '#{
|
40
|
+
"#{xpath_all}[#{name_attribute}/text() = '#{UnicodeUtils.upcase(name)}']"
|
42
41
|
end
|
43
42
|
|
44
43
|
def xpath_finder(regex)
|
@@ -52,6 +51,12 @@ module Wasserstand
|
|
52
51
|
def name_attribute
|
53
52
|
'name'
|
54
53
|
end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
def doc
|
58
|
+
Nokogiri::HTML(fetch(@url), nil, 'ISO-8859-1')
|
59
|
+
end
|
55
60
|
end
|
56
61
|
|
57
62
|
class WaterwayProvider < Provider
|
data/lib/wasserstand/version.rb
CHANGED
data/lib/wasserstand/waterway.rb
CHANGED
@@ -2,11 +2,11 @@ module Wasserstand
|
|
2
2
|
# http://stackoverflow.com/questions/2030336/how-do-i-create-a-hash-in-ruby-that-compares-strings-ignoring-case
|
3
3
|
class HashClod < Hash
|
4
4
|
def [](key)
|
5
|
-
key.respond_to?(:upcase) ? super(
|
5
|
+
key.respond_to?(:upcase) ? super(UnicodeUtils.upcase(key)) : super(key)
|
6
6
|
end
|
7
7
|
|
8
8
|
def []=(key, value)
|
9
|
-
key.respond_to?(:upcase) ? super(
|
9
|
+
key.respond_to?(:upcase) ? super(UnicodeUtils.upcase(key), value) : super(key, value)
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
data/test/helper.rb
CHANGED
@@ -7,5 +7,6 @@ class WasserstandTestCase < MiniTest::Unit::TestCase
|
|
7
7
|
def setup
|
8
8
|
url = File.join(File.dirname(__FILE__), 'fixtures', 'pegelstaende_neu.xml')
|
9
9
|
Wasserstand.waterway_provider = PegelOnline::WaterwayProvider.new(url)
|
10
|
+
Wasserstand.level_provider = PegelOnline::LevelProvider.new(url)
|
10
11
|
end
|
11
12
|
end
|
data/test/unit/test_waterway.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
1
2
|
require 'helper'
|
2
3
|
|
3
4
|
class TestWaterway < WasserstandTestCase
|
@@ -18,4 +19,9 @@ class TestWaterway < WasserstandTestCase
|
|
18
19
|
assert(Waterway['Elbe'].levels['Pirna'])
|
19
20
|
assert(Waterway['ELBE-HAVEL-KANAL'].levels['GENTHIN'])
|
20
21
|
end
|
22
|
+
|
23
|
+
def test_lookup_umlaut
|
24
|
+
assert(Waterway['Küstenkanal'])
|
25
|
+
assert(Waterway['Elbe'].levels['Schöna'])
|
26
|
+
end
|
21
27
|
end
|
data/wasserstand.gemspec
CHANGED
@@ -18,6 +18,7 @@ Gem::Specification.new do |gem|
|
|
18
18
|
gem.add_runtime_dependency 'require_all'
|
19
19
|
gem.add_runtime_dependency 'nokogiri'
|
20
20
|
gem.add_runtime_dependency 'tzinfo'
|
21
|
+
gem.add_runtime_dependency 'unicode_utils'
|
21
22
|
gem.add_development_dependency 'minitest'
|
22
23
|
gem.add_development_dependency 'rake'
|
23
24
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wasserstand
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-09-
|
12
|
+
date: 2012-09-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: require_all
|
@@ -59,6 +59,22 @@ dependencies:
|
|
59
59
|
- - ! '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: unicode_utils
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
62
78
|
- !ruby/object:Gem::Dependency
|
63
79
|
name: minitest
|
64
80
|
requirement: !ruby/object:Gem::Requirement
|