xml_mapper 0.5.0 → 0.5.1
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 +5 -3
- data/VERSION +1 -1
- data/lib/xml_mapper.rb +4 -0
- data/spec/xml_mapper_spec.rb +55 -0
- data/xml_mapper.gemspec +3 -4
- metadata +42 -42
data/README.rdoc
CHANGED
@@ -79,8 +79,10 @@ Declarative mapping of XML files to ruby attributes
|
|
79
79
|
text :producer => { :contributions => :producer } # assigns to content at xpath :performer to attributes[:contributions][:producer]
|
80
80
|
end
|
81
81
|
|
82
|
-
after_map do
|
82
|
+
after_map do # is called after attributes are extracted, self references the extracted attributes
|
83
83
|
self[:tracks_count] = self[:tracks].length
|
84
|
+
self[:xml_path] = self.xml_path # lets you access the xml_path when called with attributes_from_xml_path
|
85
|
+
self[:other_tracks_count] = self.node.search("track").count # lets you access the current xml node (in this case the whole doc)
|
84
86
|
end
|
85
87
|
|
86
88
|
# to be used for after_map callbacks
|
@@ -92,7 +94,7 @@ Declarative mapping of XML files to ruby attributes
|
|
92
94
|
== How to call
|
93
95
|
|
94
96
|
* MyMapper.attributes_from_xml(xml)
|
95
|
-
* MyMapper.attributes_from_xml_path(xml)
|
97
|
+
* MyMapper.attributes_from_xml_path(xml)
|
96
98
|
|
97
99
|
== Output
|
98
100
|
{
|
@@ -105,7 +107,7 @@ Declarative mapping of XML files to ruby attributes
|
|
105
107
|
:explicit_lyrics=>false, :contributions=>{:performer=>"Mos Def", :producer=>"DJ Premier"}, :isrc=>"2345"
|
106
108
|
}
|
107
109
|
],
|
108
|
-
:tracks_count=>2, :released_in=>1999,
|
110
|
+
:tracks_count=>2, :released_in=>1999,
|
109
111
|
:released_on=>#<Date: 4902927/2,0,2299161>, :artist_name=>"Mos Def",
|
110
112
|
:contributions=>[ {:name=>"Mos Def", :role=>"artist"}, {:name=>"DJ Premier", :role=>"producer"} ]
|
111
113
|
:artist_id=>1212, :country=>"DE"
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.1
|
data/lib/xml_mapper.rb
CHANGED
data/spec/xml_mapper_spec.rb
CHANGED
@@ -761,4 +761,59 @@ describe "XmlMapper" do
|
|
761
761
|
end
|
762
762
|
end
|
763
763
|
end
|
764
|
+
|
765
|
+
describe "#include_mapper" do
|
766
|
+
before(:each) do
|
767
|
+
@clazz = create_class
|
768
|
+
end
|
769
|
+
|
770
|
+
class Submapper < XmlMapper
|
771
|
+
text :title, :released_on
|
772
|
+
end
|
773
|
+
|
774
|
+
it "is callable" do
|
775
|
+
@clazz.include_mapper(Submapper)
|
776
|
+
end
|
777
|
+
|
778
|
+
it "works" do
|
779
|
+
xml = %(
|
780
|
+
<album>
|
781
|
+
<artist_name>Mos Def</artist_name>
|
782
|
+
<title>Black on Both Sides</title>
|
783
|
+
<released_on>2011-03-01</released_on>
|
784
|
+
</album>
|
785
|
+
)
|
786
|
+
@clazz.text "artist_name" => :artist_name
|
787
|
+
@clazz.include_mapper(Submapper)
|
788
|
+
@clazz.attributes_from_xml(xml).should == { :artist_name => "Mos Def", :title => "Black on Both Sides", :released_on => "2011-03-01" }
|
789
|
+
end
|
790
|
+
|
791
|
+
it "works for many keyword" do
|
792
|
+
xml = %(
|
793
|
+
<album>
|
794
|
+
<title>Album Title</title>
|
795
|
+
<released_on>1999-01-01</released_on>
|
796
|
+
<tracks>
|
797
|
+
<track>
|
798
|
+
<title>Track 1</title>
|
799
|
+
<released_on>1999-02-01</released_on>
|
800
|
+
</track>
|
801
|
+
<track>
|
802
|
+
<title>Track 2</title>
|
803
|
+
<released_on>1999-03-01</released_on>
|
804
|
+
</track>
|
805
|
+
</tracks>
|
806
|
+
</album>
|
807
|
+
)
|
808
|
+
@clazz.many "tracks/track" => :tracks do
|
809
|
+
include_mapper Submapper
|
810
|
+
end
|
811
|
+
@clazz.attributes_from_xml(xml).should == {
|
812
|
+
:tracks=>[
|
813
|
+
{
|
814
|
+
:released_on=>"1999-02-01", :title=>"Track 1"}, {:released_on=>"1999-03-01", :title=>"Track 2"}
|
815
|
+
]
|
816
|
+
}
|
817
|
+
end
|
818
|
+
end
|
764
819
|
end
|
data/xml_mapper.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{xml_mapper}
|
8
|
-
s.version = "0.5.
|
8
|
+
s.version = "0.5.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Tobias Schwab"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-04-07}
|
13
13
|
s.description = %q{Declarative XML to Ruby mapping}
|
14
14
|
s.email = %q{tobias.schwab@dynport.de}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -43,7 +43,7 @@ Gem::Specification.new do |s|
|
|
43
43
|
s.homepage = %q{http://github.com/dynport/xml_mapper}
|
44
44
|
s.licenses = ["MIT"]
|
45
45
|
s.require_paths = ["lib"]
|
46
|
-
s.rubygems_version = %q{1.
|
46
|
+
s.rubygems_version = %q{1.6.2}
|
47
47
|
s.summary = %q{Declarative XML to Ruby mapping}
|
48
48
|
s.test_files = [
|
49
49
|
"spec/example_spec.rb",
|
@@ -54,7 +54,6 @@ Gem::Specification.new do |s|
|
|
54
54
|
]
|
55
55
|
|
56
56
|
if s.respond_to? :specification_version then
|
57
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
58
57
|
s.specification_version = 3
|
59
58
|
|
60
59
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xml_mapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 9
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 5
|
9
|
-
-
|
10
|
-
version: 0.5.
|
9
|
+
- 1
|
10
|
+
version: 0.5.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Tobias Schwab
|
@@ -15,14 +15,12 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-04-07 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
|
-
prerelease: false
|
23
22
|
type: :runtime
|
24
|
-
|
25
|
-
version_requirements: &id001 !ruby/object:Gem::Requirement
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
26
24
|
none: false
|
27
25
|
requirements:
|
28
26
|
- - ">="
|
@@ -31,12 +29,12 @@ dependencies:
|
|
31
29
|
segments:
|
32
30
|
- 0
|
33
31
|
version: "0"
|
34
|
-
|
35
|
-
|
32
|
+
name: nokogiri
|
33
|
+
version_requirements: *id001
|
36
34
|
prerelease: false
|
35
|
+
- !ruby/object:Gem::Dependency
|
37
36
|
type: :development
|
38
|
-
|
39
|
-
version_requirements: &id002 !ruby/object:Gem::Requirement
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
40
38
|
none: false
|
41
39
|
requirements:
|
42
40
|
- - ">="
|
@@ -45,12 +43,12 @@ dependencies:
|
|
45
43
|
segments:
|
46
44
|
- 0
|
47
45
|
version: "0"
|
48
|
-
|
49
|
-
|
46
|
+
name: autotest
|
47
|
+
version_requirements: *id002
|
50
48
|
prerelease: false
|
49
|
+
- !ruby/object:Gem::Dependency
|
51
50
|
type: :development
|
52
|
-
|
53
|
-
version_requirements: &id003 !ruby/object:Gem::Requirement
|
51
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
54
52
|
none: false
|
55
53
|
requirements:
|
56
54
|
- - ">="
|
@@ -59,12 +57,12 @@ dependencies:
|
|
59
57
|
segments:
|
60
58
|
- 0
|
61
59
|
version: "0"
|
62
|
-
|
63
|
-
|
60
|
+
name: autotest-growl
|
61
|
+
version_requirements: *id003
|
64
62
|
prerelease: false
|
63
|
+
- !ruby/object:Gem::Dependency
|
65
64
|
type: :development
|
66
|
-
|
67
|
-
version_requirements: &id004 !ruby/object:Gem::Requirement
|
65
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
68
66
|
none: false
|
69
67
|
requirements:
|
70
68
|
- - ~>
|
@@ -75,12 +73,12 @@ dependencies:
|
|
75
73
|
- 1
|
76
74
|
- 0
|
77
75
|
version: 2.1.0
|
78
|
-
|
79
|
-
|
76
|
+
name: rspec
|
77
|
+
version_requirements: *id004
|
80
78
|
prerelease: false
|
79
|
+
- !ruby/object:Gem::Dependency
|
81
80
|
type: :development
|
82
|
-
|
83
|
-
version_requirements: &id005 !ruby/object:Gem::Requirement
|
81
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
84
82
|
none: false
|
85
83
|
requirements:
|
86
84
|
- - ">="
|
@@ -89,12 +87,12 @@ dependencies:
|
|
89
87
|
segments:
|
90
88
|
- 0
|
91
89
|
version: "0"
|
92
|
-
|
93
|
-
|
90
|
+
name: ruby-debug
|
91
|
+
version_requirements: *id005
|
94
92
|
prerelease: false
|
93
|
+
- !ruby/object:Gem::Dependency
|
95
94
|
type: :development
|
96
|
-
|
97
|
-
version_requirements: &id006 !ruby/object:Gem::Requirement
|
95
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
98
96
|
none: false
|
99
97
|
requirements:
|
100
98
|
- - ">="
|
@@ -103,12 +101,12 @@ dependencies:
|
|
103
101
|
segments:
|
104
102
|
- 0
|
105
103
|
version: "0"
|
106
|
-
|
107
|
-
|
104
|
+
name: cucumber
|
105
|
+
version_requirements: *id006
|
108
106
|
prerelease: false
|
107
|
+
- !ruby/object:Gem::Dependency
|
109
108
|
type: :development
|
110
|
-
|
111
|
-
version_requirements: &id007 !ruby/object:Gem::Requirement
|
109
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
112
110
|
none: false
|
113
111
|
requirements:
|
114
112
|
- - ~>
|
@@ -119,12 +117,12 @@ dependencies:
|
|
119
117
|
- 0
|
120
118
|
- 0
|
121
119
|
version: 1.0.0
|
122
|
-
|
123
|
-
|
120
|
+
name: bundler
|
121
|
+
version_requirements: *id007
|
124
122
|
prerelease: false
|
123
|
+
- !ruby/object:Gem::Dependency
|
125
124
|
type: :development
|
126
|
-
|
127
|
-
version_requirements: &id008 !ruby/object:Gem::Requirement
|
125
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
128
126
|
none: false
|
129
127
|
requirements:
|
130
128
|
- - ~>
|
@@ -135,12 +133,12 @@ dependencies:
|
|
135
133
|
- 5
|
136
134
|
- 1
|
137
135
|
version: 1.5.1
|
138
|
-
|
139
|
-
|
136
|
+
name: jeweler
|
137
|
+
version_requirements: *id008
|
140
138
|
prerelease: false
|
139
|
+
- !ruby/object:Gem::Dependency
|
141
140
|
type: :development
|
142
|
-
|
143
|
-
version_requirements: &id009 !ruby/object:Gem::Requirement
|
141
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
144
142
|
none: false
|
145
143
|
requirements:
|
146
144
|
- - ">="
|
@@ -149,7 +147,9 @@ dependencies:
|
|
149
147
|
segments:
|
150
148
|
- 0
|
151
149
|
version: "0"
|
152
|
-
|
150
|
+
name: rcov
|
151
|
+
version_requirements: *id009
|
152
|
+
prerelease: false
|
153
153
|
description: Declarative XML to Ruby mapping
|
154
154
|
email: tobias.schwab@dynport.de
|
155
155
|
executables: []
|
@@ -212,7 +212,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
212
212
|
requirements: []
|
213
213
|
|
214
214
|
rubyforge_project:
|
215
|
-
rubygems_version: 1.
|
215
|
+
rubygems_version: 1.6.2
|
216
216
|
signing_key:
|
217
217
|
specification_version: 3
|
218
218
|
summary: Declarative XML to Ruby mapping
|