xml-mapping 0.10.0 → 0.10.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 9fc1ba6799b750d709b7ee01630bf670f8488854
4
- data.tar.gz: be07c8311cce21655d28124edfed9d18378d4a71
2
+ SHA256:
3
+ metadata.gz: 1d3c510b64931acb9fcd54695e9e594e87663da7dab9d052a19e52eb1feadd58
4
+ data.tar.gz: 1712f4e61dd043d89e18315773cba8a90b54c12b75259e197b58138680c917e0
5
5
  SHA512:
6
- metadata.gz: fdec3b02611b85281ed21da509f57e04f4eb5516947ec6c42879fd7381cc020a960245ab9ab7ae683f07a218d24517488a8169c04af2958e94eaf1d647179b46
7
- data.tar.gz: c13f9e1ccf415ffd0bc4fa7f0faef0c7e9c37f83f1b2916519212de729087a8abd606dcee5b40712ecad5c18e4b362c10504b532b7786c2c562c6f12f640a324
6
+ metadata.gz: 91bf0706631fb3bc90fbb36cf9ee4e49ff3a6c6223e22dc97770e516ac4e92237fc95f8e45a3ceabf03c4531d5f086cfb6718ab8895917c07a932a34577ed654
7
+ data.tar.gz: 447cf363db2974074a321a3caabc7aee7f0e824aff0ec2edbe0db158f7dd8aa69709575cbf48f3412c911347dfe58fd54879869faba3191db99937bd03927496
data/Rakefile CHANGED
@@ -10,7 +10,6 @@ require 'rake/testtask'
10
10
  require 'rdoc/task'
11
11
  require 'rake/packagetask'
12
12
  require 'rubygems/package_task'
13
- require 'rake/contrib/sshpublisher'
14
13
 
15
14
  require File.dirname(__FILE__)+"/lib/xml/mapping/version"
16
15
 
@@ -45,10 +44,7 @@ RDoc::Task.new do |rdoc|
45
44
  rdoc.rdoc_files.include(*FILES_RDOC_EXTRA)
46
45
  rdoc.rdoc_files.include('lib/**/*.rb')
47
46
 
48
- # additional file dependencies for the rdoc task
49
- # this somewhat of a black art because RDocTask doesn't document the
50
- # prerequisite of its rdoc task (<rdoc_dir>/index.html)
51
- file "#{rdoc.rdoc_dir}/index.html" => (FileList.new("examples/**/*.rb") + FILES_RDOC_INCLUDES)
47
+ task :rdoc => (FileList.new("examples/**/*.rb") + FILES_RDOC_INCLUDES)
52
48
  end
53
49
 
54
50
 
data/TODO.txt CHANGED
@@ -1,3 +1,5 @@
1
+ - consider switching from REXML to nokogiri and/or, maybe, ox.
2
+
1
3
  - XML::XXPath: Write a real XPath parser eventually
2
4
 
3
5
  - XML::XXPath: avoid duplicates in path.all(node) result arrays when
@@ -1,11 +1,11 @@
1
1
  c = Company.load_from_file('company.xml')
2
- => #<Company:0x007fb015492e98 @name="ACME inc.", @address=#<Address:0x007fb015492380 @city="Berlin", @zip=10113>, @customers=[#<Customer:0x007fb015490030 @id="jim", @name="James Kirk">, #<Customer:0x007fb01548eeb0 @id="ernie", @name="Ernie">, #<Customer:0x007fb01548da38 @id="bert", @name="Bert">]>
2
+ => #<Company:0x00007fa87c0251a8 @name="ACME inc.", @address=#<Address:0x00007fa87c869940 @city="Berlin", @zip=10113>, @customers=[#<Customer:0x00007fa87c843740 @id="jim", @name="James Kirk">, #<Customer:0x00007fa87b98e6c8 @id="ernie", @name="Ernie">, #<Customer:0x00007fa87babfbc8 @id="bert", @name="Bert">]>
3
3
  c.name
4
4
  => "ACME inc."
5
5
  c.customers.size
6
6
  => 3
7
7
  c.customers[1]
8
- => #<Customer:0x007fb01548eeb0 @id="ernie", @name="Ernie">
8
+ => #<Customer:0x00007fa87b98e6c8 @id="ernie", @name="Ernie">
9
9
  c.customers[1].name
10
10
  => "Ernie"
11
11
  c.customers[0].name
@@ -13,7 +13,7 @@ c.customers[0].name
13
13
  c.customers[0].name = 'James Tiberius Kirk'
14
14
  => "James Tiberius Kirk"
15
15
  c.customers << Customer.new('cm','Cookie Monster')
16
- => [#<Customer:0x007fb015490030 @id="jim", @name="James Tiberius Kirk">, #<Customer:0x007fb01548eeb0 @id="ernie", @name="Ernie">, #<Customer:0x007fb01548da38 @id="bert", @name="Bert">, #<Customer:0x007fb01547f1b8 @id="cm", @name="Cookie Monster">]
16
+ => [#<Customer:0x00007fa87c843740 @id="jim", @name="James Tiberius Kirk">, #<Customer:0x00007fa87b98e6c8 @id="ernie", @name="Ernie">, #<Customer:0x00007fa87babfbc8 @id="bert", @name="Bert">, #<Customer:0x00007fa87babd558 @id="cm", @name="Cookie Monster">]
17
17
  xml2 = c.save_to_xml
18
18
  => <company name='ACME inc.'> ... </>
19
19
  xml2.write($stdout,2)
@@ -1,10 +1,10 @@
1
1
 
2
2
  root = XML::Mapping.load_object_from_file "documents_folders.xml"
3
- => #<Folder:0x007fb015437098 @entries=[#<Document:0x007fb015436148 @name="plan", @contents=" inhale, exhale">, #<Folder:0x007fb0154352c0 @entries=[#<Folder:0x007fb015434550 @entries=[#<Document:0x007fb015432e30 @name="README", @contents="foo bar baz">], @name="xml-mapping">], @name="work">], @name="home">
3
+ => #<Folder:0x00007fa87c9362d8 @entries=[#<Document:0x00007fa87c935310 @name="plan", @contents=" inhale, exhale">, #<Folder:0x00007fa87c934758 @entries=[#<Folder:0x00007fa87c9639b8 @entries=[#<Document:0x00007fa87c961e88 @name="README", @contents="foo bar baz">], @name="xml-mapping">], @name="work">], @name="home">
4
4
  root.name
5
5
  => "home"
6
6
  root.entries
7
- => [#<Document:0x007fb015436148 @name="plan", @contents=" inhale, exhale">, #<Folder:0x007fb0154352c0 @entries=[#<Folder:0x007fb015434550 @entries=[#<Document:0x007fb015432e30 @name="README", @contents="foo bar baz">], @name="xml-mapping">], @name="work">]
7
+ => [#<Document:0x00007fa87c935310 @name="plan", @contents=" inhale, exhale">, #<Folder:0x00007fa87c934758 @entries=[#<Folder:0x00007fa87c9639b8 @entries=[#<Document:0x00007fa87c961e88 @name="README", @contents="foo bar baz">], @name="xml-mapping">], @name="work">]
8
8
 
9
9
  root.append "etc", Folder.new
10
10
  root["etc"].append "passwd", Document.new
@@ -1,5 +1,5 @@
1
1
  s=Signature.load_from_file("order_signature_enhanced.xml")
2
- => #<Signature:0x007fb015310840 @position="product manager", @signed_on=2005-02-13 00:00:00 +0100, @name="John Doe">
2
+ => #<Signature:0x00007fa87c919188 @position="product manager", @signed_on=2005-02-13 00:00:00 +0100, @name="John Doe">
3
3
  s.signed_on
4
4
  => 2005-02-13 00:00:00 +0100
5
5
  s.signed_on=Time.local(1976,12,18)
@@ -1,10 +1,10 @@
1
1
  ####read access
2
2
  o=Order.load_from_file("order.xml")
3
- => #<Order:0x007fb01549d438 @signatures=[#<Signature:0x007fb015493b68 @position="product manager", @name="John Doe">, #<Signature:0x007fb015492c68 @position="clerk", @name="Jill Smith">, #<Signature:0x007fb015491a20 @position="Some Employee", @name="Miles O'Brien">], @reference="12343-AHSHE-314159", @client=#<Client:0x007fb01549c998 @work_address=#<Address:0x007fb01549a238 @city="San Francisco", @state="CA", @zip=94102, @street="98765, Fulton Street">, @name="Jean Smith", @home_address=#<Address:0x007fb01549bbb0 @city="San Mateo", @state="CA", @zip=94403, @street="2000, Alameda de las Pulgas">>, @items={"RF-0001"=>#<Item:0x007fb0154989b0 @descr="Stuffed Penguin", @quantity=10, @unit_price=8.95>, "RF-0034"=>#<Item:0x007fb015496638 @descr="Chocolate", @quantity=5, @unit_price=28.5>, "RF-3341"=>#<Item:0x007fb015495300 @descr="Cookie", @quantity=30, @unit_price=0.85>}>
3
+ => #<Order:0x00007fa87c968e68 @signatures=[#<Signature:0x00007fa87c970fc8 @position="product manager", @name="John Doe">, #<Signature:0x00007fa87c970500 @position="clerk", @name="Jill Smith">, #<Signature:0x00007fa87bacf8e8 @position="Some Employee", @name="Miles O'Brien">], @reference="12343-AHSHE-314159", @client=#<Client:0x00007fa87c968508 @work_address=#<Address:0x00007fa87babdcb0 @city="San Francisco", @state="CA", @zip=94102, @street="98765, Fulton Street">, @name="Jean Smith", @home_address=#<Address:0x00007fa87babf808 @city="San Mateo", @state="CA", @zip=94403, @street="2000, Alameda de las Pulgas">>, @items={"RF-0001"=>#<Item:0x00007fa87c973ea8 @descr="Stuffed Penguin", @quantity=10, @unit_price=8.95>, "RF-0034"=>#<Item:0x00007fa87c972e68 @descr="Chocolate", @quantity=5, @unit_price=28.5>, "RF-3341"=>#<Item:0x00007fa87c971f68 @descr="Cookie", @quantity=30, @unit_price=0.85>}>
4
4
  o.reference
5
5
  => "12343-AHSHE-314159"
6
6
  o.client
7
- => #<Client:0x007fb01549c998 @work_address=#<Address:0x007fb01549a238 @city="San Francisco", @state="CA", @zip=94102, @street="98765, Fulton Street">, @name="Jean Smith", @home_address=#<Address:0x007fb01549bbb0 @city="San Mateo", @state="CA", @zip=94403, @street="2000, Alameda de las Pulgas">>
7
+ => #<Client:0x00007fa87c968508 @work_address=#<Address:0x00007fa87babdcb0 @city="San Francisco", @state="CA", @zip=94102, @street="98765, Fulton Street">, @name="Jean Smith", @home_address=#<Address:0x00007fa87babf808 @city="San Mateo", @state="CA", @zip=94403, @street="2000, Alameda de las Pulgas">>
8
8
  o.items.keys
9
9
  => ["RF-0001", "RF-0034", "RF-3341"]
10
10
  o.items["RF-0034"].descr
@@ -12,7 +12,7 @@ o.items["RF-0034"].descr
12
12
  o.items["RF-0034"].total_price
13
13
  => 142.5
14
14
  o.signatures
15
- => [#<Signature:0x007fb015493b68 @position="product manager", @name="John Doe">, #<Signature:0x007fb015492c68 @position="clerk", @name="Jill Smith">, #<Signature:0x007fb015491a20 @position="Some Employee", @name="Miles O'Brien">]
15
+ => [#<Signature:0x00007fa87c970fc8 @position="product manager", @name="John Doe">, #<Signature:0x00007fa87c970500 @position="clerk", @name="Jill Smith">, #<Signature:0x00007fa87bacf8e8 @position="Some Employee", @name="Miles O'Brien">]
16
16
  o.signatures[2].name
17
17
  => "Miles O'Brien"
18
18
  o.signatures[2].position
@@ -150,17 +150,17 @@ xml.write($stdout,2)
150
150
 
151
151
  ####Starting a new order from scratch
152
152
  o = Order.new
153
- => #<Order:0x007fb0153bfef8 @signatures=[]>
153
+ => #<Order:0x00007fa87c94f328 @signatures=[]>
154
154
  ## attributes with default values (here: signatures) are set
155
155
  ## automatically
156
156
 
157
157
  xml=o.save_to_xml
158
158
  XML::MappingError: no value, and no default value, for attribute: reference
159
- from /home/olaf/xml-mapping/lib/xml/mapping/base.rb:712:in `obj_to_xml'
160
- from /home/olaf/xml-mapping/lib/xml/mapping/base.rb:218:in `block in fill_into_xml'
161
- from /home/olaf/xml-mapping/lib/xml/mapping/base.rb:217:in `each'
162
- from /home/olaf/xml-mapping/lib/xml/mapping/base.rb:217:in `fill_into_xml'
163
- from /home/olaf/xml-mapping/lib/xml/mapping/base.rb:229:in `save_to_xml'
159
+ from /Users/oklischat/xml-mapping/lib/xml/mapping/base.rb:724:in `obj_to_xml'
160
+ from /Users/oklischat/xml-mapping/lib/xml/mapping/base.rb:218:in `block in fill_into_xml'
161
+ from /Users/oklischat/xml-mapping/lib/xml/mapping/base.rb:217:in `each'
162
+ from /Users/oklischat/xml-mapping/lib/xml/mapping/base.rb:217:in `fill_into_xml'
163
+ from /Users/oklischat/xml-mapping/lib/xml/mapping/base.rb:229:in `save_to_xml'
164
164
  ## can't save as long as there are still unset attributes without
165
165
  ## default values
166
166
 
@@ -10,13 +10,13 @@ end
10
10
  ### usage
11
11
 
12
12
  p1 = Person.load_from_xml(REXML::Document.new('<person name="Jim"/>').root)
13
- => #<Person:0x007fb014e95298 @name="Jim">
13
+ => #<Person:0x00007fa87bb3a6e8 @name="Jim">
14
14
 
15
15
  p2 = Person.load_from_xml(REXML::Document.new('<person><name>James</name></person>').root)
16
- => #<Person:0x007fb014e847b8 @name="James">
16
+ => #<Person:0x00007fa87ba83b50 @name="James">
17
17
 
18
18
  p3 = Person.load_from_xml(REXML::Document.new('<person>Suzy</person>').root)
19
- => #<Person:0x007fb014e6c550 @name="Suzy">
19
+ => #<Person:0x00007fa87bb43ef0 @name="Suzy">
20
20
 
21
21
 
22
22
  p1.save_to_xml.write($stdout)
@@ -66,7 +66,7 @@ xml = REXML::Document.new('
66
66
 
67
67
  ## load using the default mapping
68
68
  p = Person.load_from_xml xml
69
- => #<Person:0x007fb015506640 @name="Suzy", @age=28, @address=#<Address:0x007fb015505a38 @street="Abbey Road", @number=72, @city="London", @zip=18827>>
69
+ => #<Person:0x00007fa87ba674c8 @name="Suzy", @age=28, @address=#<Address:0x00007fa87ba65dd0 @street="Abbey Road", @number=72, @city="London", @zip=18827>>
70
70
 
71
71
  ## save using the default mapping
72
72
  xml2 = p.save_to_xml
@@ -109,6 +109,6 @@ other_xml.write $stdout,2
109
109
  </individual>
110
110
  ## load it again using the :other mapping
111
111
  p2 = Person.load_from_xml other_xml, :mapping=>:other
112
- => #<Person:0x007fb0154bad30 @name="Suzy", @age=28, @address=#<Address:0x007fb0154b98e0 @street="Abbey Road", @number=72, @city="London", @zip=18827>>
112
+ => #<Person:0x00007fa87c0b3f98 @name="Suzy", @age=28, @address=#<Address:0x00007fa87c0b3638 @street="Abbey Road", @number=72, @city="London", @zip=18827>>
113
113
 
114
114
  ## p2 identical to p
@@ -9,7 +9,7 @@ end
9
9
  ### usage
10
10
 
11
11
  p1 = Publication.load_from_xml(REXML::Document.new('<publication author="Jim"/>').root)
12
- => #<Publication:0x007fb01548e668 @author="Jim">
12
+ => #<Publication:0x00007fa87c9b95e8 @author="Jim">
13
13
 
14
14
  p2 = Publication.load_from_xml(REXML::Document.new('
15
15
  <publication>
@@ -17,4 +17,4 @@ p2 = Publication.load_from_xml(REXML::Document.new('
17
17
  <contr>Mel</contr>
18
18
  <contr>Toby</contr>
19
19
  </publication>').root)
20
- => #<Publication:0x007fb01547ef38 @contributors=["Chris", "Mel", "Toby"]>
20
+ => #<Publication:0x00007fa87c0b5d48 @contributors=["Chris", "Mel", "Toby"]>
@@ -12,7 +12,7 @@ class Foo
12
12
  end
13
13
 
14
14
  f = Foo.load_from_xml(REXML::Document.new('<foo name="Jim" more="XYZ"/>').root)
15
- => #<Foo:0x007fb015460c40 @name="JimXYZ">
15
+ => #<Foo:0x00007fa87bb5b550 @name="JimXYZ">
16
16
 
17
17
  xml = f.save_to_xml
18
18
  xml.write $stdout,2
@@ -1,5 +1,5 @@
1
1
  ppl=People.load_from_file("stringarray.xml")
2
- => #<People:0x007fb015431a58 @names=["Jim", "Susan", "Herbie", "Nancy"]>
2
+ => #<People:0x00007fa87ba28228 @names=["Jim", "Susan", "Herbie", "Nancy"]>
3
3
  ppl.names
4
4
  => ["Jim", "Susan", "Herbie", "Nancy"]
5
5
 
@@ -15,21 +15,21 @@ nowxml=Time.now.save_to_xml
15
15
  nowxml.write($stdout,2)
16
16
  <time>
17
17
  <year>
18
- 2014
18
+ 2018
19
19
  </year>
20
20
  <month>
21
- 9
21
+ 2
22
22
  </month>
23
23
  <mday>
24
- 19
24
+ 28
25
25
  </mday>
26
26
  <hours>
27
- 14
27
+ 16
28
28
  </hours>
29
29
  <minutes>
30
- 1
30
+ 3
31
31
  </minutes>
32
32
  <seconds>
33
- 43
33
+ 33
34
34
  </seconds>
35
35
  </time>
@@ -64,7 +64,7 @@ firstbazelt=XML::XXPath.new("/bar/baz").first(rootelt)
64
64
  path2=XML::XXPath.new("@key2")
65
65
 
66
66
  path2.create_new(firstbazelt)
67
- => #<XML::XXPath::Accessors::Attribute:0x007fb014e37210 @parent=<baz key='work' key2='[unset]'> ... </>, @name="key2">
67
+ => #<XML::XXPath::Accessors::Attribute:0x00007fa87bbf3698 @parent=<baz key='work' key2='[unset]'> ... </>, @name="key2">
68
68
  d.write($stdout,2)
69
69
 
70
70
  <foo>
@@ -87,12 +87,11 @@ d.write($stdout,2)
87
87
  ### same call again...
88
88
  path2.create_new(firstbazelt)
89
89
  XML::XXPathError: XPath (@key2): create_new and attribute already exists
90
- from /home/olaf/xml-mapping/lib/xml/xxpath/steps.rb:215:in `create_on'
91
- from /home/olaf/xml-mapping/lib/xml/xxpath/steps.rb:80:in `block in creator'
92
- from /home/olaf/xml-mapping/lib/xml/xxpath.rb:91:in `call'
93
- from /home/olaf/xml-mapping/lib/xml/xxpath.rb:91:in `all'
94
- from /home/olaf/xml-mapping/lib/xml/xxpath.rb:70:in `first'
95
- from /home/olaf/xml-mapping/lib/xml/xxpath.rb:112:in `create_new'
90
+ from /Users/oklischat/xml-mapping/lib/xml/xxpath/steps.rb:215:in `create_on'
91
+ from /Users/oklischat/xml-mapping/lib/xml/xxpath/steps.rb:80:in `block in creator'
92
+ from /Users/oklischat/xml-mapping/lib/xml/xxpath.rb:91:in `all'
93
+ from /Users/oklischat/xml-mapping/lib/xml/xxpath.rb:70:in `first'
94
+ from /Users/oklischat/xml-mapping/lib/xml/xxpath.rb:112:in `create_new'
96
95
  ### can't create that path anew again -- an element can't have more
97
96
  ### than one attribute with the same name
98
97
 
@@ -150,12 +149,11 @@ d.write($stdout,2)
150
149
 
151
150
  XML::XXPath.new("baz[6]").create_new(baz6elt.parent)
152
151
  XML::XXPathError: XPath: baz[6]: create_new and element already exists
153
- from /home/olaf/xml-mapping/lib/xml/xxpath/steps.rb:167:in `create_on'
154
- from /home/olaf/xml-mapping/lib/xml/xxpath/steps.rb:80:in `block in creator'
155
- from /home/olaf/xml-mapping/lib/xml/xxpath.rb:91:in `call'
156
- from /home/olaf/xml-mapping/lib/xml/xxpath.rb:91:in `all'
157
- from /home/olaf/xml-mapping/lib/xml/xxpath.rb:70:in `first'
158
- from /home/olaf/xml-mapping/lib/xml/xxpath.rb:112:in `create_new'
152
+ from /Users/oklischat/xml-mapping/lib/xml/xxpath/steps.rb:167:in `create_on'
153
+ from /Users/oklischat/xml-mapping/lib/xml/xxpath/steps.rb:80:in `block in creator'
154
+ from /Users/oklischat/xml-mapping/lib/xml/xxpath.rb:91:in `all'
155
+ from /Users/oklischat/xml-mapping/lib/xml/xxpath.rb:70:in `first'
156
+ from /Users/oklischat/xml-mapping/lib/xml/xxpath.rb:112:in `create_new'
159
157
  ### yep, baz[6] already existed and thus couldn't be created once
160
158
  ### again
161
159
 
@@ -96,7 +96,7 @@ d.write($stdout,2)
96
96
  </foo>### no change
97
97
 
98
98
  XML::XXPath.new("/bar/baz[6]/@haha").first(rootelt,:ensure_created=>true)
99
- => #<XML::XXPath::Accessors::Attribute:0x007fb014a51d08 @parent=<baz haha='[unset]'/>, @name="haha">
99
+ => #<XML::XXPath::Accessors::Attribute:0x00007fa87c9d32e0 @parent=<baz haha='[unset]'/>, @name="haha">
100
100
  d.write($stdout,2)
101
101
 
102
102
  <foo>
@@ -115,7 +115,7 @@ d.write($stdout,2)
115
115
  </foo>### for there to be a 6th "baz" element, there must be 1st..5th "baz" elements
116
116
 
117
117
  XML::XXPath.new("/bar/baz[6]/@haha").first(rootelt,:ensure_created=>true)
118
- => #<XML::XXPath::Accessors::Attribute:0x007fb014a479c0 @parent=<baz haha='[unset]'/>, @name="haha">
118
+ => #<XML::XXPath::Accessors::Attribute:0x00007fa87b0ee068 @parent=<baz haha='[unset]'/>, @name="haha">
119
119
  d.write($stdout,2)
120
120
 
121
121
  <foo>
@@ -44,7 +44,7 @@ path2.all(d)
44
44
  ## "first" raises XML::XXPathError in such cases...
45
45
  path2.first(d)
46
46
  XML::XXPathError: path not found: /foo/bar[2]/baz[4]
47
- from /home/olaf/xml-mapping/lib/xml/xxpath.rb:75:in `first'
47
+ from /Users/oklischat/xml-mapping/lib/xml/xxpath.rb:75:in `first'
48
48
 
49
49
  ##...unless we allow nil returns
50
50
  path2.first(d,:allow_nil=>true)
@@ -85,7 +85,7 @@ module XML
85
85
  # can't really use a class variable for this because it must be
86
86
  # shared by all class methods mixed into classes by including
87
87
  # Mapping. See
88
- # http://user.cs.tu-berlin.de/~klischat/mydocs/ruby/mixin_class_methods_global_state.txt.html
88
+ # http://multi-io.github.io/mydocs-pub/ruby/mixin_class_methods_global_state.txt.html
89
89
  # for a more detailed discussion.
90
90
  Classes_by_rootelt_names = {} #:nodoc:
91
91
  class << Classes_by_rootelt_names
@@ -258,8 +258,9 @@ module XML
258
258
  # The XML is obtained by calling #save_to_xml.
259
259
  def save_to_file(filename, options={:mapping=>:_default})
260
260
  xml = save_to_xml :mapping=>options[:mapping]
261
+ formatter = options[:formatter] || self.class.mapping_output_formatter
261
262
  File.open(filename,"w") do |f|
262
- REXML::Formatters::Transitive.new(2,false).write(xml,f)
263
+ formatter.write(xml, f)
263
264
  end
264
265
  end
265
266
 
@@ -435,6 +436,17 @@ module XML
435
436
  self.name.split('::')[-1].gsub(/^(.)/){$1.downcase}.gsub(/(.)([A-Z])/){$1+"-"+$2.downcase}
436
437
  end
437
438
 
439
+ # the formatter to be used for output formatting when writing
440
+ # xml to character streams (Files/IOs). Combined
441
+ # getter/setter. Defaults to simple (compact/no-whitespace)
442
+ # formatting, may be overridden on a per-call base via options
443
+ def mapping_output_formatter(formatter=nil)
444
+ # TODO make it per-mapping
445
+ if formatter
446
+ @mapping_output_formatter = formatter
447
+ end
448
+ @mapping_output_formatter ||= REXML::Formatters::Default.new
449
+ end
438
450
  end
439
451
 
440
452
 
@@ -48,14 +48,21 @@ module XML
48
48
  @path = XML::XXPath.new(path)
49
49
  args
50
50
  end
51
+
51
52
  def extract_attr_value(xml) # :nodoc:
52
53
  txt = default_when_xpath_err{ @path.first(xml).text }
53
- begin
54
- Integer(txt)
55
- rescue ArgumentError
56
- Float(txt)
54
+
55
+ if txt.nil?
56
+ raise NoAttrValueSet, "Attribute #{@attrname} not set (text missing)"
57
+ else
58
+ begin
59
+ Integer(txt)
60
+ rescue ArgumentError
61
+ Float(txt)
62
+ end
57
63
  end
58
64
  end
65
+
59
66
  def set_attr_value(xml, value) # :nodoc:
60
67
  raise RuntimeError, "Not an integer: #{value}" unless Numeric===value
61
68
  @path.first(xml,:ensure_created=>true).text = value.to_s
@@ -3,6 +3,6 @@
3
3
 
4
4
  module XML
5
5
  module Mapping
6
- VERSION = '0.10.0'
6
+ VERSION = '0.10.1'
7
7
  end
8
8
  end
@@ -152,7 +152,7 @@ begin
152
152
  # temporarily suppress warnings
153
153
  class <<Kernel
154
154
  alias_method :old_warn, :warn
155
- def warn(msg)
155
+ def warn(*args)
156
156
  end
157
157
  end
158
158
  begin
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0" encoding="ISO-8859-1"?>
2
+
3
+ <number>
4
+ <value/>
5
+ </number>
@@ -0,0 +1,11 @@
1
+ require 'xml/mapping'
2
+
3
+ class Number
4
+ include XML::Mapping
5
+
6
+ use_mapping :no_default
7
+ numeric_node :value, 'value'
8
+
9
+ use_mapping :with_default
10
+ numeric_node :value, 'value', default_value: 0
11
+ end
@@ -46,6 +46,22 @@ class XmlMappingTest < Test::Unit::TestCase
46
46
  assert_equal 18, @c.offices[1].address.number
47
47
  end
48
48
 
49
+ def test_int_node_default_value
50
+ require 'number'
51
+ xml = REXML::Document.new(File.new(File.dirname(__FILE__) + "/fixtures/number.xml"))
52
+
53
+ assert_raise(XML::MappingError.new('no value, and no default value: Attribute value not set (text missing)')) do
54
+ Number.load_from_xml(xml.root, :mapping => :no_default)
55
+ end
56
+
57
+ num = nil
58
+ assert_nothing_raised do
59
+ num = Number.load_from_xml(xml.root, :mapping => :with_default)
60
+ end
61
+
62
+ assert_equal 0, num.value
63
+ end
64
+
49
65
  def test_getter_boolean_node
50
66
  path=XML::XXPath.new("offices/office[2]/classified")
51
67
  assert_equal(path.first(@xml.root).text == "yes",
@@ -356,4 +372,29 @@ class XmlMappingTest < Test::Unit::TestCase
356
372
  assert_equal 'no', xml2.root.elements[5].elements[3].elements[1].text
357
373
  end
358
374
 
375
+
376
+ def test_file_io
377
+ require 'tmpdir'
378
+ Dir.mktmpdir do |dir|
379
+ @c.save_to_file "#{dir}/out.xml"
380
+ c2 = Company.load_from_file "#{dir}/out.xml"
381
+ assert_equal @c, c2, 'read back object equals original'
382
+
383
+ @c.save_to_file "#{dir}/out_default.xml", :formatter=>REXML::Formatters::Default.new
384
+
385
+ assert FileUtils.compare_file("#{dir}/out.xml", "#{dir}/out_default.xml"), 'default formatter is Formatters::Default'
386
+ assert File.open("#{dir}/out_default.xml").readlines.grep(/^\s/).empty?, 'default formatter produces no indentations'
387
+
388
+ @c.save_to_file "#{dir}/out_pretty.xml", :formatter=>REXML::Formatters::Pretty.new
389
+ assert not(File.open("#{dir}/out_pretty.xml").readlines.grep(/^\s/).empty?), 'pretty formatter does produce indentations'
390
+
391
+ Company.class_eval <<-EOS
392
+ mapping_output_formatter REXML::Formatters::Pretty.new
393
+ EOS
394
+
395
+ @c.save_to_file "#{dir}/out2.xml"
396
+ assert FileUtils.compare_file("#{dir}/out2.xml", "#{dir}/out_pretty.xml"), 'default formatter can be changed on a per-class basis'
397
+ end
398
+ end
399
+
359
400
  end
@@ -15,10 +15,10 @@ https://github.com/multi-io/xml-mapping
15
15
  - {Single-attribute Nodes}[rdoc-label:label-Single-attribute+Nodes]
16
16
  - {Default Values}[rdoc-label:label-Default+Values]
17
17
  - {Single-attribute Nodes with Sub-objects}[rdoc-label:label-Single-attribute+Nodes+with+Sub-objects]
18
- - {Attribute Handling Details, Augmenting Existing Classes}[rdoc-label:label-Attribute+Handling+Details%2C+Augmenting+Existing+Classes]
18
+ - {Attribute Handling Details, Augmenting Existing Classes}[rdoc-label:label-Attribute+Handling+Details-2C+Augmenting+Existing+Classes]
19
19
  - {Other Nodes}[rdoc-label:label-Other+Nodes]
20
20
  - {choice_node}[rdoc-label:label-choice_node]
21
- - {Readers/Writers}[rdoc-label:label-Readers%2FWriters]
21
+ - {Readers/Writers}[rdoc-label:label-Readers-2FWriters]
22
22
  - {Multiple Mappings per Class}[rdoc-label:label-Multiple+Mappings+per+Class]
23
23
  - {Defining your own Node Types}[rdoc-label:label-Defining+your+own+Node+Types]
24
24
  - {XPath Interpreter}[rdoc-label:label-XPath+Interpreter]
@@ -153,11 +153,11 @@ http://www.castor.org/xml-mapping.html)
153
153
 
154
154
  ####read access
155
155
  o=Order.load_from_file("order.xml")
156
- => #<Order:0x007fb01549d438 @signatures=[#<Signature:0x007fb015493b68 @position="product manager", @name="John Doe">, #<Signature:0x007fb015492c68 @position="clerk", @name="Jill Smith">, #<Signature:0x007fb015491a20 @position="Some Employee", @name="Miles O'Brien">], @reference="12343-AHSHE-314159", @client=#<Client:0x007fb01549c998 @work_address=#<Address:0x007fb01549a238 @city="San Francisco", @state="CA", @zip=94102, @street="98765, Fulton Street">, @name="Jean Smith", @home_address=#<Address:0x007fb01549bbb0 @city="San Mateo", @state="CA", @zip=94403, @street="2000, Alameda de las Pulgas">>, @items={"RF-0001"=>#<Item:0x007fb0154989b0 @descr="Stuffed Penguin", @quantity=10, @unit_price=8.95>, "RF-0034"=>#<Item:0x007fb015496638 @descr="Chocolate", @quantity=5, @unit_price=28.5>, "RF-3341"=>#<Item:0x007fb015495300 @descr="Cookie", @quantity=30, @unit_price=0.85>}>
156
+ => #<Order:0x00007fa316170280 @signatures=[#<Signature:0x00007fa316153c98 @position="product manager", @name="John Doe">, #<Signature:0x00007fa316152320 @position="clerk", @name="Jill Smith">, #<Signature:0x00007fa31614b890 @position="Some Employee", @name="Miles O'Brien">], @reference="12343-AHSHE-314159", @client=#<Client:0x00007fa31616afb0 @work_address=#<Address:0x00007fa316168210 @city="San Francisco", @state="CA", @zip=94102, @street="98765, Fulton Street">, @name="Jean Smith", @home_address=#<Address:0x00007fa316169d18 @city="San Mateo", @state="CA", @zip=94403, @street="2000, Alameda de las Pulgas">>, @items={"RF-0001"=>#<Item:0x00007fa316160f60 @descr="Stuffed Penguin", @quantity=10, @unit_price=8.95>, "RF-0034"=>#<Item:0x00007fa31615b920 @descr="Chocolate", @quantity=5, @unit_price=28.5>, "RF-3341"=>#<Item:0x00007fa31615a2a0 @descr="Cookie", @quantity=30, @unit_price=0.85>}>
157
157
  o.reference
158
158
  => "12343-AHSHE-314159"
159
159
  o.client
160
- => #<Client:0x007fb01549c998 @work_address=#<Address:0x007fb01549a238 @city="San Francisco", @state="CA", @zip=94102, @street="98765, Fulton Street">, @name="Jean Smith", @home_address=#<Address:0x007fb01549bbb0 @city="San Mateo", @state="CA", @zip=94403, @street="2000, Alameda de las Pulgas">>
160
+ => #<Client:0x00007fa31616afb0 @work_address=#<Address:0x00007fa316168210 @city="San Francisco", @state="CA", @zip=94102, @street="98765, Fulton Street">, @name="Jean Smith", @home_address=#<Address:0x00007fa316169d18 @city="San Mateo", @state="CA", @zip=94403, @street="2000, Alameda de las Pulgas">>
161
161
  o.items.keys
162
162
  => ["RF-0001", "RF-0034", "RF-3341"]
163
163
  o.items["RF-0034"].descr
@@ -165,7 +165,7 @@ http://www.castor.org/xml-mapping.html)
165
165
  o.items["RF-0034"].total_price
166
166
  => 142.5
167
167
  o.signatures
168
- => [#<Signature:0x007fb015493b68 @position="product manager", @name="John Doe">, #<Signature:0x007fb015492c68 @position="clerk", @name="Jill Smith">, #<Signature:0x007fb015491a20 @position="Some Employee", @name="Miles O'Brien">]
168
+ => [#<Signature:0x00007fa316153c98 @position="product manager", @name="John Doe">, #<Signature:0x00007fa316152320 @position="clerk", @name="Jill Smith">, #<Signature:0x00007fa31614b890 @position="Some Employee", @name="Miles O'Brien">]
169
169
  o.signatures[2].name
170
170
  => "Miles O'Brien"
171
171
  o.signatures[2].position
@@ -303,17 +303,17 @@ http://www.castor.org/xml-mapping.html)
303
303
 
304
304
  ####Starting a new order from scratch
305
305
  o = Order.new
306
- => #<Order:0x007fb0153bfef8 @signatures=[]>
306
+ => #<Order:0x00007fa3160c9f48 @signatures=[]>
307
307
  ## attributes with default values (here: signatures) are set
308
308
  ## automatically
309
309
 
310
310
  xml=o.save_to_xml
311
311
  XML::MappingError: no value, and no default value, for attribute: reference
312
- from /home/olaf/xml-mapping/lib/xml/mapping/base.rb:712:in `obj_to_xml'
313
- from /home/olaf/xml-mapping/lib/xml/mapping/base.rb:218:in `block in fill_into_xml'
314
- from /home/olaf/xml-mapping/lib/xml/mapping/base.rb:217:in `each'
315
- from /home/olaf/xml-mapping/lib/xml/mapping/base.rb:217:in `fill_into_xml'
316
- from /home/olaf/xml-mapping/lib/xml/mapping/base.rb:229:in `save_to_xml'
312
+ from /Users/oklischat/xml-mapping/lib/xml/mapping/base.rb:724:in `obj_to_xml'
313
+ from /Users/oklischat/xml-mapping/lib/xml/mapping/base.rb:218:in `block in fill_into_xml'
314
+ from /Users/oklischat/xml-mapping/lib/xml/mapping/base.rb:217:in `each'
315
+ from /Users/oklischat/xml-mapping/lib/xml/mapping/base.rb:217:in `fill_into_xml'
316
+ from /Users/oklischat/xml-mapping/lib/xml/mapping/base.rb:229:in `save_to_xml'
317
317
  ## can't save as long as there are still unset attributes without
318
318
  ## default values
319
319
 
@@ -568,7 +568,7 @@ document like this one:
568
568
  usage:
569
569
 
570
570
  ppl=People.load_from_file("stringarray.xml")
571
- => #<People:0x007fb015431a58 @names=["Jim", "Susan", "Herbie", "Nancy"]>
571
+ => #<People:0x00007fa316332050 @names=["Jim", "Susan", "Herbie", "Nancy"]>
572
572
  ppl.names
573
573
  => ["Jim", "Susan", "Herbie", "Nancy"]
574
574
 
@@ -675,11 +675,11 @@ Usage:
675
675
 
676
676
 
677
677
  root = XML::Mapping.load_object_from_file "documents_folders.xml"
678
- => #<Folder:0x007fb015437098 @entries=[#<Document:0x007fb015436148 @name="plan", @contents=" inhale, exhale">, #<Folder:0x007fb0154352c0 @entries=[#<Folder:0x007fb015434550 @entries=[#<Document:0x007fb015432e30 @name="README", @contents="foo bar baz">], @name="xml-mapping">], @name="work">], @name="home">
678
+ => #<Folder:0x00007fa3162cadd8 @entries=[#<Document:0x00007fa3162ca018 @name="plan", @contents=" inhale, exhale">, #<Folder:0x00007fa3162c9410 @entries=[#<Folder:0x00007fa3162c8768 @entries=[#<Document:0x00007fa316132318 @name="README", @contents="foo bar baz">], @name="xml-mapping">], @name="work">], @name="home">
679
679
  root.name
680
680
  => "home"
681
681
  root.entries
682
- => [#<Document:0x007fb015436148 @name="plan", @contents=" inhale, exhale">, #<Folder:0x007fb0154352c0 @entries=[#<Folder:0x007fb015434550 @entries=[#<Document:0x007fb015432e30 @name="README", @contents="foo bar baz">], @name="xml-mapping">], @name="work">]
682
+ => [#<Document:0x00007fa3162ca018 @name="plan", @contents=" inhale, exhale">, #<Folder:0x00007fa3162c9410 @entries=[#<Folder:0x00007fa3162c8768 @entries=[#<Document:0x00007fa316132318 @name="README", @contents="foo bar baz">], @name="xml-mapping">], @name="work">]
683
683
 
684
684
  root.append "etc", Folder.new
685
685
  root["etc"].append "passwd", Document.new
@@ -933,22 +933,22 @@ declarations that declare XML mappings for the day, month etc. fields:
933
933
  nowxml.write($stdout,2)
934
934
  <time>
935
935
  <year>
936
- 2014
936
+ 2017
937
937
  </year>
938
938
  <month>
939
- 9
939
+ 12
940
940
  </month>
941
941
  <mday>
942
- 19
942
+ 29
943
943
  </mday>
944
944
  <hours>
945
- 14
945
+ 16
946
946
  </hours>
947
947
  <minutes>
948
- 1
948
+ 9
949
949
  </minutes>
950
950
  <seconds>
951
- 43
951
+ 59
952
952
  </seconds>
953
953
  </time>
954
954
 
@@ -1031,7 +1031,7 @@ attribute) or several "contributors" (contained in a sequence of
1031
1031
  ### usage
1032
1032
 
1033
1033
  p1 = Publication.load_from_xml(REXML::Document.new('<publication author="Jim"/>').root)
1034
- => #<Publication:0x007fb01548e668 @author="Jim">
1034
+ => #<Publication:0x00007fa3178fb940 @author="Jim">
1035
1035
 
1036
1036
  p2 = Publication.load_from_xml(REXML::Document.new('
1037
1037
  <publication>
@@ -1039,7 +1039,7 @@ attribute) or several "contributors" (contained in a sequence of
1039
1039
  <contr>Mel</contr>
1040
1040
  <contr>Toby</contr>
1041
1041
  </publication>').root)
1042
- => #<Publication:0x007fb01547ef38 @contributors=["Chris", "Mel", "Toby"]>
1042
+ => #<Publication:0x00007fa317902420 @contributors=["Chris", "Mel", "Toby"]>
1043
1043
 
1044
1044
  The symbols :if, :then, and :elsif (but not :else -- see below) in the
1045
1045
  +choice_node+'s node factory method call are ignored; they may be
@@ -1093,13 +1093,13 @@ itself. You can achieve this with +choice_node+ like this:
1093
1093
  ### usage
1094
1094
 
1095
1095
  p1 = Person.load_from_xml(REXML::Document.new('<person name="Jim"/>').root)
1096
- => #<Person:0x007fb014e95298 @name="Jim">
1096
+ => #<Person:0x00007fa31704d3e8 @name="Jim">
1097
1097
 
1098
1098
  p2 = Person.load_from_xml(REXML::Document.new('<person><name>James</name></person>').root)
1099
- => #<Person:0x007fb014e847b8 @name="James">
1099
+ => #<Person:0x00007fa31700ead0 @name="James">
1100
1100
 
1101
1101
  p3 = Person.load_from_xml(REXML::Document.new('<person>Suzy</person>').root)
1102
- => #<Person:0x007fb014e6c550 @name="Suzy">
1102
+ => #<Person:0x00007fa3170042d8 @name="Suzy">
1103
1103
 
1104
1104
 
1105
1105
  p1.save_to_xml.write($stdout)
@@ -1147,7 +1147,7 @@ Here's a (really contrived) example:
1147
1147
  end
1148
1148
 
1149
1149
  f = Foo.load_from_xml(REXML::Document.new('<foo name="Jim" more="XYZ"/>').root)
1150
- => #<Foo:0x007fb015460c40 @name="JimXYZ">
1150
+ => #<Foo:0x00007fa31723eaa8 @name="JimXYZ">
1151
1151
 
1152
1152
  xml = f.save_to_xml
1153
1153
  xml.write $stdout,2
@@ -1309,7 +1309,7 @@ age and an address:
1309
1309
 
1310
1310
  ## load using the default mapping
1311
1311
  p = Person.load_from_xml xml
1312
- => #<Person:0x007fb015506640 @name="Suzy", @age=28, @address=#<Address:0x007fb015505a38 @street="Abbey Road", @number=72, @city="London", @zip=18827>>
1312
+ => #<Person:0x00007fa31788b7d0 @name="Suzy", @age=28, @address=#<Address:0x00007fa31788ac68 @street="Abbey Road", @number=72, @city="London", @zip=18827>>
1313
1313
 
1314
1314
  ## save using the default mapping
1315
1315
  xml2 = p.save_to_xml
@@ -1352,7 +1352,7 @@ age and an address:
1352
1352
  </individual>
1353
1353
  ## load it again using the :other mapping
1354
1354
  p2 = Person.load_from_xml other_xml, :mapping=>:other
1355
- => #<Person:0x007fb0154bad30 @name="Suzy", @age=28, @address=#<Address:0x007fb0154b98e0 @street="Abbey Road", @number=72, @city="London", @zip=18827>>
1355
+ => #<Person:0x00007fa3178ba8a0 @name="Suzy", @age=28, @address=#<Address:0x00007fa3178b9ce8 @street="Abbey Road", @number=72, @city="London", @zip=18827>>
1356
1356
 
1357
1357
  ## p2 identical to p
1358
1358
 
@@ -141,7 +141,7 @@ updated in-place.
141
141
  ## "first" raises XML::XXPathError in such cases...
142
142
  path2.first(d)
143
143
  XML::XXPathError: path not found: /foo/bar[2]/baz[4]
144
- from /home/olaf/xml-mapping/lib/xml/xxpath.rb:75:in `first'
144
+ from /Users/oklischat/xml-mapping/lib/xml/xxpath.rb:75:in `first'
145
145
 
146
146
  ##...unless we allow nil returns
147
147
  path2.first(d,:allow_nil=>true)
@@ -343,7 +343,7 @@ Examples:
343
343
  </foo>### no change
344
344
 
345
345
  XML::XXPath.new("/bar/baz[6]/@haha").first(rootelt,:ensure_created=>true)
346
- => #<XML::XXPath::Accessors::Attribute:0x007fb014a51d08 @parent=<baz haha='[unset]'/>, @name="haha">
346
+ => #<XML::XXPath::Accessors::Attribute:0x00007fa317891770 @parent=<baz haha='[unset]'/>, @name="haha">
347
347
  d.write($stdout,2)
348
348
 
349
349
  <foo>
@@ -362,7 +362,7 @@ Examples:
362
362
  </foo>### for there to be a 6th "baz" element, there must be 1st..5th "baz" elements
363
363
 
364
364
  XML::XXPath.new("/bar/baz[6]/@haha").first(rootelt,:ensure_created=>true)
365
- => #<XML::XXPath::Accessors::Attribute:0x007fb014a479c0 @parent=<baz haha='[unset]'/>, @name="haha">
365
+ => #<XML::XXPath::Accessors::Attribute:0x00007fa316308660 @parent=<baz haha='[unset]'/>, @name="haha">
366
366
  d.write($stdout,2)
367
367
 
368
368
  <foo>
@@ -456,7 +456,7 @@ Examples:
456
456
  path2=XML::XXPath.new("@key2")
457
457
 
458
458
  path2.create_new(firstbazelt)
459
- => #<XML::XXPath::Accessors::Attribute:0x007fb014e37210 @parent=<baz key='work' key2='[unset]'> ... </>, @name="key2">
459
+ => #<XML::XXPath::Accessors::Attribute:0x00007fa316862138 @parent=<baz key='work' key2='[unset]'> ... </>, @name="key2">
460
460
  d.write($stdout,2)
461
461
 
462
462
  <foo>
@@ -479,12 +479,11 @@ Examples:
479
479
  ### same call again...
480
480
  path2.create_new(firstbazelt)
481
481
  XML::XXPathError: XPath (@key2): create_new and attribute already exists
482
- from /home/olaf/xml-mapping/lib/xml/xxpath/steps.rb:215:in `create_on'
483
- from /home/olaf/xml-mapping/lib/xml/xxpath/steps.rb:80:in `block in creator'
484
- from /home/olaf/xml-mapping/lib/xml/xxpath.rb:91:in `call'
485
- from /home/olaf/xml-mapping/lib/xml/xxpath.rb:91:in `all'
486
- from /home/olaf/xml-mapping/lib/xml/xxpath.rb:70:in `first'
487
- from /home/olaf/xml-mapping/lib/xml/xxpath.rb:112:in `create_new'
482
+ from /Users/oklischat/xml-mapping/lib/xml/xxpath/steps.rb:215:in `create_on'
483
+ from /Users/oklischat/xml-mapping/lib/xml/xxpath/steps.rb:80:in `block in creator'
484
+ from /Users/oklischat/xml-mapping/lib/xml/xxpath.rb:91:in `all'
485
+ from /Users/oklischat/xml-mapping/lib/xml/xxpath.rb:70:in `first'
486
+ from /Users/oklischat/xml-mapping/lib/xml/xxpath.rb:112:in `create_new'
488
487
  ### can't create that path anew again -- an element can't have more
489
488
  ### than one attribute with the same name
490
489
 
@@ -542,12 +541,11 @@ Examples:
542
541
 
543
542
  XML::XXPath.new("baz[6]").create_new(baz6elt.parent)
544
543
  XML::XXPathError: XPath: baz[6]: create_new and element already exists
545
- from /home/olaf/xml-mapping/lib/xml/xxpath/steps.rb:167:in `create_on'
546
- from /home/olaf/xml-mapping/lib/xml/xxpath/steps.rb:80:in `block in creator'
547
- from /home/olaf/xml-mapping/lib/xml/xxpath.rb:91:in `call'
548
- from /home/olaf/xml-mapping/lib/xml/xxpath.rb:91:in `all'
549
- from /home/olaf/xml-mapping/lib/xml/xxpath.rb:70:in `first'
550
- from /home/olaf/xml-mapping/lib/xml/xxpath.rb:112:in `create_new'
544
+ from /Users/oklischat/xml-mapping/lib/xml/xxpath/steps.rb:167:in `create_on'
545
+ from /Users/oklischat/xml-mapping/lib/xml/xxpath/steps.rb:80:in `block in creator'
546
+ from /Users/oklischat/xml-mapping/lib/xml/xxpath.rb:91:in `all'
547
+ from /Users/oklischat/xml-mapping/lib/xml/xxpath.rb:70:in `first'
548
+ from /Users/oklischat/xml-mapping/lib/xml/xxpath.rb:112:in `create_new'
551
549
  ### yep, baz[6] already existed and thus couldn't be created once
552
550
  ### again
553
551
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xml-mapping
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.10.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Olaf Klischat
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-19 00:00:00.000000000 Z
11
+ date: 2018-02-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -92,10 +92,12 @@ files:
92
92
  - test/fixtures/company1.xml
93
93
  - test/fixtures/documents_folders.xml
94
94
  - test/fixtures/documents_folders2.xml
95
+ - test/fixtures/number.xml
95
96
  - test/fixtures/triangle_m1.xml
96
97
  - test/fixtures/triangle_m2.xml
97
98
  - test/inheritance_test.rb
98
99
  - test/multiple_mappings_test.rb
100
+ - test/number.rb
99
101
  - test/rexml_xpath_benchmark.rb
100
102
  - test/tests_init.rb
101
103
  - test/triangle_mm.rb
@@ -128,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
128
130
  version: '0'
129
131
  requirements: []
130
132
  rubyforge_project: xml-mapping
131
- rubygems_version: 2.2.2
133
+ rubygems_version: 2.7.3
132
134
  signing_key:
133
135
  specification_version: 4
134
136
  summary: XML-Object mapper for Ruby