wurfl 1.0.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.
@@ -0,0 +1,31 @@
1
+ require "pstore"
2
+
3
+ module Wurfl; end
4
+
5
+ =begin
6
+ A simple module to hold commonly used methods for the WURFL.
7
+ This is currently just loading and saving a WURFL PStore database.
8
+ =end
9
+ module Wurfl::Utils
10
+
11
+ # Does not catch exception, but throws to the caller.
12
+ def load_wurfl_pstore(pstorefile)
13
+ pstore = PStore.new(pstorefile)
14
+ handsets = fallbacks = nil
15
+ pstore.transaction do |ps|
16
+ handsets = ps["handsets"]
17
+ fallbacks = ps["fallback"]
18
+ end
19
+ return handsets,fallbacks
20
+ end
21
+
22
+ #Also throws exceptions to the caller.
23
+ def save_wurfl_pstore(pstorefile,handsets,fallbacks)
24
+ store = PStore.new(pstorefile)
25
+ store.transaction do |ps|
26
+ ps["handsets"] = handsets
27
+ ps["fallback"] = fallbacks
28
+ end
29
+ end
30
+
31
+ end
@@ -0,0 +1,38 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <wurfl>
3
+ <version>
4
+ <ver>Test Version</ver>
5
+ </version>
6
+ <devices>
7
+ <device id="generic" user_agent="" fall_back="root">
8
+ <group id="display">
9
+ <capability name="physical_screen_height" value="27"/>
10
+ <capability name="columns" value="11"/>
11
+ <capability name="physical_screen_width" value="27"/>
12
+ <capability name="rows" value="6"/>
13
+ <capability name="max_image_width" value="90"/>
14
+ <capability name="resolution_height" value="40"/>
15
+ <capability name="resolution_width" value="90"/>
16
+ <capability name="max_image_height" value="35"/>
17
+ </group>
18
+ </device>
19
+ <device id="generic_xhtml" user_agent="Mozz" fall_back="generic">
20
+ <group id="display">
21
+ <capability name="max_image_width" value="120"/>
22
+ <capability name="resolution_height" value="92"/>
23
+ <capability name="resolution_width" value="128"/>
24
+ <capability name="max_image_height" value="92"/>
25
+ </group>
26
+ </device>
27
+ <device id="apple_generic" user_agent="Mozilla/5.0 (iPhone;" fall_back="generic_xhtml">
28
+ <group id="display">
29
+ <capability name="columns" value="20"/>
30
+ <capability name="max_image_width" value="300"/>
31
+ <capability name="rows" value="20"/>
32
+ <capability name="resolution_width" value="300"/>
33
+ <capability name="resolution_height" value="300"/>
34
+ <capability name="max_image_height" value="300"/>
35
+ </group>
36
+ </device>
37
+ </devices>
38
+ </wurfl>
@@ -0,0 +1,70 @@
1
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
2
+ require 'wurfl/handset'
3
+ require 'test/unit'
4
+
5
+ class TestHandset < Test::Unit::TestCase
6
+ def setup
7
+ @f = Wurfl::Handset.new("f", "f", nil)
8
+ @h = Wurfl::Handset.new("h", "h", @f)
9
+ end
10
+
11
+ def test_f
12
+ assert_nil @h["capability"]
13
+ @f["k"] = "v"
14
+ assert_equal "v", @h["k"]
15
+ @h["k"] = nil
16
+ assert_nil @h["k"]
17
+ end
18
+
19
+ def test_get_value_and_owner
20
+ assert_equal [nil, nil], @h.get_value_and_owner("k")
21
+ @f["k"] = "v"
22
+ assert_equal ["v", "f"], @h.get_value_and_owner("k")
23
+ @h["k"] = nil
24
+ assert_equal [nil, "h"], @h.get_value_and_owner("k")
25
+ end
26
+
27
+ def test_keys
28
+ @h["k1"] = "v1"
29
+ @f["k2"] = "v2"
30
+ assert_equal(["k1", "k2"], @h.keys)
31
+ end
32
+
33
+ def test_each
34
+ @h["k1"] = "v1"
35
+ @f["k2"] = "v2"
36
+ a = []
37
+ @h.each {|k,v| a << [k,v]}
38
+ assert_equal [["k1","v1"], ["k2","v2"]], a
39
+ end
40
+
41
+ def test_equivalence
42
+ assert @h != nil
43
+ assert @h != 1
44
+ assert @h != @f
45
+ assert @h == @h
46
+ h2 = Wurfl::Handset.new("h","h", @f)
47
+ assert @h == h2
48
+ h2["k"] = "v"
49
+ assert @h != h2
50
+ @f["k"] = "v"
51
+ assert @h == h2
52
+ end
53
+
54
+ def test_compare
55
+ f2 = Wurfl::Handset.new("f2", "f2", nil)
56
+ h2 = Wurfl::Handset.new("h2","h2", f2)
57
+ assert @h.compare(@f).empty?
58
+ @h["k"] = "v"
59
+
60
+ assert_equal [["k", nil, nil]], @h.compare(h2)
61
+
62
+ h2["k"] = "v2"
63
+ assert_equal [["k", "v2", "h2"]], @h.compare(h2)
64
+
65
+ @f["j"] = "1"
66
+ f2["j"] = "2"
67
+ assert_equal [["k", "v2", "h2"], ["j", "2", "f2"]], @h.compare(h2)
68
+ end
69
+
70
+ end
@@ -0,0 +1,29 @@
1
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
2
+ require 'wurfl/loader'
3
+ require 'test/unit'
4
+
5
+ class TestLoader < Test::Unit::TestCase
6
+
7
+ def setup
8
+ @loader = Wurfl::Loader.new
9
+ end
10
+
11
+ def test_load_wurfl
12
+ handsets, fallbacks = @loader.load_wurfl(File.join(File.dirname(__FILE__), "data", "wurfl.simple.xml"))
13
+ assert_equal("20", handsets["apple_generic"]["columns"])
14
+ assert_equal("11", handsets["generic_xhtml"]["columns"])
15
+ assert_equal("11", handsets["generic"]["columns"])
16
+
17
+ assert_equal("300", handsets["apple_generic"]["max_image_height"])
18
+ assert_equal("92", handsets["generic_xhtml"]["max_image_height"])
19
+ assert_equal("35", handsets["generic"]["max_image_height"])
20
+ end
21
+
22
+ def test_load_wurfl_from_string
23
+ s = File.read(File.join(File.dirname(__FILE__), "data", "wurfl.simple.xml"))
24
+ handsets, fallbacks = @loader.parse_xml(s)
25
+ assert_equal("300", handsets["apple_generic"]["max_image_height"])
26
+ end
27
+
28
+ end
29
+
data/wurfl.gemspec ADDED
@@ -0,0 +1,59 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{wurfl}
5
+ s.version = "1.0.2"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Paul McMahon", "Zev Blut"]
9
+ s.date = %q{2009-06-02}
10
+ s.description = %q{TODO}
11
+ s.email = %q{info@mobalean.com}
12
+ s.executables = ["uaproftowurfl.rb", "wurflsanitycheck.rb", "wurflinspector.rb", "wurflloader.rb", "uaprofwurflcomparator.rb", "wurflcomparator.rb"]
13
+ s.extra_rdoc_files = [
14
+ "LICENSE",
15
+ "README.rdoc"
16
+ ]
17
+ s.files = [
18
+ ".gitignore",
19
+ "LICENSE",
20
+ "README.rdoc",
21
+ "Rakefile",
22
+ "VERSION",
23
+ "bin/uaproftowurfl.rb",
24
+ "bin/uaprofwurflcomparator.rb",
25
+ "bin/wurflcomparator.rb",
26
+ "bin/wurflinspector.rb",
27
+ "bin/wurflloader.rb",
28
+ "bin/wurflsanitycheck.rb",
29
+ "lib/wurfl/handset.rb",
30
+ "lib/wurfl/loader.rb",
31
+ "lib/wurfl/uaproftowurfl.rb",
32
+ "lib/wurfl/utils.rb",
33
+ "test/data/wurfl.simple.xml",
34
+ "test/handset_test.rb",
35
+ "test/loader_test.rb",
36
+ "wurfl.gemspec"
37
+ ]
38
+ s.has_rdoc = true
39
+ s.homepage = %q{http://github.com/pwim/wurfl}
40
+ s.rdoc_options = ["--charset=UTF-8"]
41
+ s.require_paths = ["lib"]
42
+ s.rubyforge_project = %q{wurfl}
43
+ s.rubygems_version = %q{1.3.1}
44
+ s.summary = %q{Library and tools for manipulating the WURFL}
45
+ s.test_files = [
46
+ "test/loader_test.rb",
47
+ "test/handset_test.rb"
48
+ ]
49
+
50
+ if s.respond_to? :specification_version then
51
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
52
+ s.specification_version = 2
53
+
54
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
55
+ else
56
+ end
57
+ else
58
+ end
59
+ end
metadata ADDED
@@ -0,0 +1,79 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wurfl
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Paul McMahon
8
+ - Zev Blut
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2009-06-02 00:00:00 +09:00
14
+ default_executable:
15
+ dependencies: []
16
+
17
+ description: TODO
18
+ email: info@mobalean.com
19
+ executables:
20
+ - uaproftowurfl.rb
21
+ - wurflsanitycheck.rb
22
+ - wurflinspector.rb
23
+ - wurflloader.rb
24
+ - uaprofwurflcomparator.rb
25
+ - wurflcomparator.rb
26
+ extensions: []
27
+
28
+ extra_rdoc_files:
29
+ - LICENSE
30
+ - README.rdoc
31
+ files:
32
+ - .gitignore
33
+ - LICENSE
34
+ - README.rdoc
35
+ - Rakefile
36
+ - VERSION
37
+ - bin/uaproftowurfl.rb
38
+ - bin/uaprofwurflcomparator.rb
39
+ - bin/wurflcomparator.rb
40
+ - bin/wurflinspector.rb
41
+ - bin/wurflloader.rb
42
+ - bin/wurflsanitycheck.rb
43
+ - lib/wurfl/handset.rb
44
+ - lib/wurfl/loader.rb
45
+ - lib/wurfl/uaproftowurfl.rb
46
+ - lib/wurfl/utils.rb
47
+ - test/data/wurfl.simple.xml
48
+ - test/handset_test.rb
49
+ - test/loader_test.rb
50
+ - wurfl.gemspec
51
+ has_rdoc: true
52
+ homepage: http://github.com/pwim/wurfl
53
+ post_install_message:
54
+ rdoc_options:
55
+ - --charset=UTF-8
56
+ require_paths:
57
+ - lib
58
+ required_ruby_version: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: "0"
63
+ version:
64
+ required_rubygems_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: "0"
69
+ version:
70
+ requirements: []
71
+
72
+ rubyforge_project: wurfl
73
+ rubygems_version: 1.3.1
74
+ signing_key:
75
+ specification_version: 2
76
+ summary: Library and tools for manipulating the WURFL
77
+ test_files:
78
+ - test/loader_test.rb
79
+ - test/handset_test.rb