smg 0.1.0 → 0.2.0
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/README.rdoc +6 -62
- data/examples/discogs/label.rb +62 -0
- data/examples/discogs/search.rb +60 -0
- data/examples/plant.rb +1 -2
- data/examples/twitter.rb +8 -5
- data/examples/weather.rb +146 -0
- data/lib/smg.rb +4 -0
- data/lib/smg/document.rb +25 -8
- data/lib/smg/http.rb +66 -0
- data/lib/smg/http/exceptions.rb +37 -0
- data/lib/smg/http/request.rb +126 -0
- data/lib/smg/mapping.rb +11 -1
- data/lib/smg/mapping/element.rb +29 -13
- data/lib/smg/mapping/typecasts.rb +2 -1
- data/lib/smg/model.rb +9 -3
- data/lib/smg/resource.rb +5 -1
- data/spec/collect_spec.rb +254 -0
- data/spec/context_spec.rb +189 -0
- data/spec/extract_spec.rb +200 -0
- data/spec/filtering_spec.rb +164 -0
- data/spec/fixtures/discogs/948224.xml +1 -0
- data/spec/fixtures/discogs/Enzyme+Records.xml +9 -0
- data/spec/fixtures/discogs/Genosha+Recordings.xml +13 -0
- data/spec/fixtures/discogs/Ophidian.xml +6 -0
- data/spec/fixtures/fake/malus.xml +18 -0
- data/spec/fixtures/fake/valve.xml +8 -0
- data/spec/fixtures/twitter/pipopolam.xml +46 -0
- data/spec/fixtures/yahoo.weather.com.xml +50 -0
- data/spec/http/request_spec.rb +186 -0
- data/spec/http/shared/automatic.rb +43 -0
- data/spec/http/shared/non_automatic.rb +36 -0
- data/spec/http/shared/redirectable.rb +30 -0
- data/spec/http_spec.rb +76 -0
- data/spec/lib/helpers/http_helpers.rb +27 -0
- data/spec/lib/matchers/instance_methods.rb +38 -0
- data/spec/mapping/element_spec.rb +241 -0
- data/spec/mapping/typecasts_spec.rb +52 -0
- data/spec/resource_spec.rb +30 -0
- data/spec/root_spec.rb +26 -0
- data/spec/spec_helper.rb +23 -0
- metadata +53 -10
- data/examples/discogs.rb +0 -39
data/spec/root_spec.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
require File.expand_path File.join(File.dirname(__FILE__), 'spec_helper')
|
2
|
+
|
3
|
+
describe SMG::Model, ".root" do
|
4
|
+
|
5
|
+
before :each do
|
6
|
+
@klass = Class.new { include SMG::Resource }
|
7
|
+
end
|
8
|
+
|
9
|
+
it "defines the root tag for further mapping" do
|
10
|
+
@klass.root 'foo'
|
11
|
+
@klass.extract 'a'
|
12
|
+
@klass.mapping.elements.should have_key ['foo','a']
|
13
|
+
end
|
14
|
+
|
15
|
+
it "could be redefined on-the-fly" do
|
16
|
+
@klass.root 'foo'
|
17
|
+
@klass.extract 'a'
|
18
|
+
@klass.root 'bar'
|
19
|
+
@klass.extract 'b'
|
20
|
+
@klass.mapping.elements.should have_key ['foo','a']
|
21
|
+
@klass.mapping.elements.should have_key ['bar','b']
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
# EOF
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
require 'rubygems'
|
3
|
+
|
4
|
+
begin
|
5
|
+
|
6
|
+
gem 'rspec', '>=1.2'
|
7
|
+
require 'spec'
|
8
|
+
|
9
|
+
SPEC_ROOT = Pathname(__FILE__).dirname.expand_path
|
10
|
+
|
11
|
+
require SPEC_ROOT + 'lib/matchers/instance_methods'
|
12
|
+
require SPEC_ROOT + 'lib/helpers/http_helpers'
|
13
|
+
|
14
|
+
FIXTURES_DIR = SPEC_ROOT + 'fixtures'
|
15
|
+
|
16
|
+
dir = SPEC_ROOT.parent.join('lib').to_s
|
17
|
+
$:.unshift(dir) unless $:.include?(dir)
|
18
|
+
require 'smg'
|
19
|
+
|
20
|
+
rescue LoadError
|
21
|
+
end
|
22
|
+
|
23
|
+
# EOF
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
7
|
+
- 2
|
8
8
|
- 0
|
9
|
-
version: 0.
|
9
|
+
version: 0.2.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- SSDany
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-06-13 00:00:00 +04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -30,10 +30,24 @@ dependencies:
|
|
30
30
|
version: "1.3"
|
31
31
|
type: :runtime
|
32
32
|
version_requirements: *id001
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: addressable
|
35
|
+
prerelease: false
|
36
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
segments:
|
41
|
+
- 2
|
42
|
+
- 1
|
43
|
+
- 1
|
44
|
+
version: 2.1.1
|
45
|
+
type: :runtime
|
46
|
+
version_requirements: *id002
|
33
47
|
description: |
|
34
48
|
XML to Object mapping library with simple declarative syntax.
|
35
|
-
Supports 'contextual' parsing.
|
36
|
-
|
49
|
+
Supports 'contextual' parsing and conditions.
|
50
|
+
Provides a simple HTTP interaction solution.
|
37
51
|
|
38
52
|
email: inadsence@gmail.com
|
39
53
|
executables: []
|
@@ -44,11 +58,10 @@ extra_rdoc_files:
|
|
44
58
|
- README.rdoc
|
45
59
|
files:
|
46
60
|
- README.rdoc
|
47
|
-
- examples/helper.rb
|
48
|
-
- examples/discogs.rb
|
49
|
-
- examples/twitter.rb
|
50
|
-
- examples/plant.rb
|
51
61
|
- lib/smg/document.rb
|
62
|
+
- lib/smg/http/exceptions.rb
|
63
|
+
- lib/smg/http/request.rb
|
64
|
+
- lib/smg/http.rb
|
52
65
|
- lib/smg/mapping/element.rb
|
53
66
|
- lib/smg/mapping/typecasts.rb
|
54
67
|
- lib/smg/mapping.rb
|
@@ -56,8 +69,38 @@ files:
|
|
56
69
|
- lib/smg/resource.rb
|
57
70
|
- lib/smg/version.rb
|
58
71
|
- lib/smg.rb
|
72
|
+
- examples/discogs/label.rb
|
73
|
+
- examples/discogs/search.rb
|
74
|
+
- examples/helper.rb
|
75
|
+
- examples/plant.rb
|
76
|
+
- examples/twitter.rb
|
77
|
+
- examples/weather.rb
|
78
|
+
- spec/collect_spec.rb
|
79
|
+
- spec/context_spec.rb
|
80
|
+
- spec/extract_spec.rb
|
81
|
+
- spec/filtering_spec.rb
|
82
|
+
- spec/fixtures/discogs/948224.xml
|
83
|
+
- spec/fixtures/discogs/Enzyme+Records.xml
|
84
|
+
- spec/fixtures/discogs/Genosha+Recordings.xml
|
85
|
+
- spec/fixtures/discogs/Ophidian.xml
|
86
|
+
- spec/fixtures/fake/malus.xml
|
87
|
+
- spec/fixtures/fake/valve.xml
|
88
|
+
- spec/fixtures/twitter/pipopolam.xml
|
89
|
+
- spec/fixtures/yahoo.weather.com.xml
|
90
|
+
- spec/http/request_spec.rb
|
91
|
+
- spec/http/shared/automatic.rb
|
92
|
+
- spec/http/shared/non_automatic.rb
|
93
|
+
- spec/http/shared/redirectable.rb
|
94
|
+
- spec/http_spec.rb
|
95
|
+
- spec/lib/helpers/http_helpers.rb
|
96
|
+
- spec/lib/matchers/instance_methods.rb
|
97
|
+
- spec/mapping/element_spec.rb
|
98
|
+
- spec/mapping/typecasts_spec.rb
|
99
|
+
- spec/resource_spec.rb
|
100
|
+
- spec/root_spec.rb
|
101
|
+
- spec/spec_helper.rb
|
59
102
|
has_rdoc: true
|
60
|
-
homepage:
|
103
|
+
homepage: http://github.com/SSDany/smg
|
61
104
|
licenses: []
|
62
105
|
|
63
106
|
post_install_message:
|
data/examples/discogs.rb
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
require File.expand_path(File.join(File.dirname(__FILE__), 'helper'))
|
2
|
-
|
3
|
-
class Label
|
4
|
-
|
5
|
-
class Release
|
6
|
-
|
7
|
-
include SMG::Resource
|
8
|
-
|
9
|
-
extract 'release' , :at => :id, :as => :discogs_id, :class => :integer
|
10
|
-
extract 'release' , :at => :status
|
11
|
-
|
12
|
-
extract 'release/title'
|
13
|
-
extract 'release/catno'
|
14
|
-
extract 'release/artist'
|
15
|
-
|
16
|
-
end
|
17
|
-
|
18
|
-
include SMG::Resource
|
19
|
-
|
20
|
-
root 'resp/label'
|
21
|
-
extract 'name'
|
22
|
-
extract 'profile'
|
23
|
-
collect 'releases/release' , :as => :releases, :class => Release, :context => [:with_releases]
|
24
|
-
|
25
|
-
end
|
26
|
-
|
27
|
-
data = File.read(ROOT.join('spec/fixtures/discogs/Genosha+Recordings.xml'))
|
28
|
-
|
29
|
-
label = Label.parse(data)
|
30
|
-
puts label.name
|
31
|
-
puts label.profile
|
32
|
-
puts label.releases.map { |release| "#{release.catno}: #{release.title}" }.join("\n")
|
33
|
-
|
34
|
-
label = Label.parse(data,:with_releases)
|
35
|
-
puts label.name
|
36
|
-
puts label.profile
|
37
|
-
puts label.releases.map { |release| "#{release.catno}: #{release.title}" }.join("\n")
|
38
|
-
|
39
|
-
# EOF
|