nokogiri-happymapper 0.5.6 → 0.5.7

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.
Files changed (38) hide show
  1. checksums.yaml +15 -0
  2. data/CHANGELOG.md +5 -1
  3. data/README.md +74 -53
  4. data/lib/happymapper/anonymous_mapper.rb +114 -0
  5. data/lib/happymapper/attribute.rb +20 -2
  6. data/lib/happymapper/element.rb +52 -2
  7. data/lib/happymapper/item.rb +89 -182
  8. data/lib/happymapper/supported_types.rb +140 -0
  9. data/lib/happymapper/text_node.rb +6 -1
  10. data/lib/happymapper/version.rb +3 -0
  11. data/lib/happymapper.rb +42 -22
  12. data/spec/attribute_default_value_spec.rb +50 -0
  13. data/spec/fixtures/default_namespace_combi.xml +2 -1
  14. data/spec/happymapper/attribute_spec.rb +12 -0
  15. data/spec/happymapper/element_spec.rb +9 -0
  16. data/spec/{happymapper_item_spec.rb → happymapper/item_spec.rb} +5 -5
  17. data/spec/happymapper/text_node_spec.rb +9 -0
  18. data/spec/happymapper_parse_spec.rb +87 -0
  19. data/spec/happymapper_spec.rb +9 -3
  20. data/spec/ignay_spec.rb +22 -22
  21. data/spec/inheritance_spec.rb +61 -0
  22. data/spec/parse_with_object_to_update_spec.rb +111 -0
  23. data/spec/spec_helper.rb +1 -1
  24. data/spec/to_xml_spec.rb +200 -0
  25. data/spec/to_xml_with_namespaces_spec.rb +196 -0
  26. data/spec/wilcard_tag_name_spec.rb +96 -0
  27. data/spec/wrap_spec.rb +82 -0
  28. data/spec/xpath_spec.rb +60 -59
  29. metadata +34 -33
  30. data/TODO +0 -0
  31. data/spec/happymapper_attribute_spec.rb +0 -21
  32. data/spec/happymapper_element_spec.rb +0 -21
  33. data/spec/happymapper_generic_base_spec.rb +0 -92
  34. data/spec/happymapper_text_node_spec.rb +0 -21
  35. data/spec/happymapper_to_xml_namespaces_spec.rb +0 -196
  36. data/spec/happymapper_to_xml_spec.rb +0 -203
  37. data/spec/happymapper_wrap_spec.rb +0 -69
  38. data/spec/parse_instance_spec.rb +0 -129
@@ -0,0 +1,196 @@
1
+ require 'spec_helper'
2
+
3
+ module ToXMLWithNamespaces
4
+
5
+ #
6
+ # Similar example as the to_xml but this time with namespacing
7
+ #
8
+ class Address
9
+ include HappyMapper
10
+
11
+ register_namespace 'address', 'http://www.company.com/address'
12
+ register_namespace 'country', 'http://www.company.com/country'
13
+
14
+ tag 'Address'
15
+ namespace 'address'
16
+
17
+ element :country, 'Country', :tag => 'country', :namespace => 'country'
18
+
19
+ attribute :location, String, :on_save => :when_saving_location
20
+
21
+ element :street, String
22
+ element :postcode, String
23
+ element :city, String
24
+
25
+ element :housenumber, String
26
+
27
+ #
28
+ # to_xml will default to the attr_accessor method and not the attribute,
29
+ # allowing for that to be overwritten
30
+ #
31
+ def housenumber
32
+ "[#{@housenumber}]"
33
+ end
34
+
35
+ def when_saving_location(loc)
36
+ loc + '-live'
37
+ end
38
+
39
+ #
40
+ # Write a empty element even if this is not specified
41
+ #
42
+ element :description, String, :state_when_nil => true
43
+
44
+ #
45
+ # Perform the on_save operation when saving
46
+ #
47
+ has_one :date_created, Time, :on_save => lambda {|time| DateTime.parse(time).strftime("%T %D") if time }
48
+
49
+ #
50
+ # Write multiple elements and call on_save when saving
51
+ #
52
+ has_many :dates_updated, Time, :on_save => lambda {|times|
53
+ times.compact.map {|time| DateTime.parse(time).strftime("%T %D") } if times }
54
+
55
+ #
56
+ # Class composition
57
+ #
58
+
59
+ def initialize(parameters)
60
+ parameters.each_pair do |property,value|
61
+ send("#{property}=",value) if respond_to?("#{property}=")
62
+ end
63
+ end
64
+
65
+ end
66
+
67
+ #
68
+ # Country is composed above the in Address class. Here is a demonstration
69
+ # of how to_xml will handle class composition as well as utilizing the tag
70
+ # value.
71
+ #
72
+ class Country
73
+ include HappyMapper
74
+
75
+ register_namespace 'countryName', 'http://www.company.com/countryName'
76
+
77
+ attribute :code, String, :tag => 'countryCode'
78
+ has_one :name, String, :tag => 'countryName', :namespace => 'countryName'
79
+
80
+ def initialize(parameters)
81
+ parameters.each_pair do |property,value|
82
+ send("#{property}=",value) if respond_to?("#{property}=")
83
+ end
84
+ end
85
+
86
+ end
87
+
88
+
89
+ #
90
+ # This class is an example of a class that has a default namespace
91
+ #xmlns="urn:eventis:prodis:onlineapi:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
92
+ #
93
+ class Recipe
94
+ include HappyMapper
95
+
96
+ # this is the default namespace of the document
97
+ register_namespace 'xmlns', 'urn:eventis:prodis:onlineapi:1.0'
98
+ register_namespace 'xsi', "http://www.w3.org/2001/XMLSchema-instance"
99
+ register_namespace 'xsd', "http://www.w3.org/2001/XMLSchema"
100
+
101
+ has_many :ingredients, String
102
+
103
+ def initialize(parameters)
104
+ parameters.each_pair {|property,value| send("#{property}=",value) if respond_to?("#{property}=") }
105
+ end
106
+ end
107
+ end
108
+
109
+ describe "Saving #to_xml", "with xml namespaces" do
110
+
111
+ context "#to_xml", "with namespaces" do
112
+
113
+ let(:subject) do
114
+ address = ToXMLWithNamespaces::Address.new('street' => 'Mockingbird Lane',
115
+ 'location' => 'Home',
116
+ 'housenumber' => '1313',
117
+ 'postcode' => '98103',
118
+ 'city' => 'Seattle',
119
+ 'country' => ToXMLWithNamespaces::Country.new(:name => 'USA', :code => 'us'),
120
+ 'date_created' => '2011-01-01 15:00:00')
121
+
122
+
123
+ address.dates_updated = ["2011-01-01 16:01:00","2011-01-02 11:30:01"]
124
+
125
+ Nokogiri::XML(address.to_xml).root
126
+ end
127
+
128
+ it "saves elements" do
129
+ elements = { 'street' => 'Mockingbird Lane', 'postcode' => '98103', 'city' => 'Seattle' }
130
+
131
+ elements.each_pair do |property,value|
132
+ expect(subject.xpath("address:#{property}").text).to eq value
133
+ end
134
+ end
135
+
136
+ it "saves attributes" do
137
+ expect(subject.xpath('@location').text).to eq "Home-live"
138
+ end
139
+
140
+ context "when an element has a 'state_when_nil' parameter" do
141
+ it "saves an empty element" do
142
+ expect(subject.xpath('address:description').text).to eq ""
143
+ end
144
+ end
145
+
146
+ context "when an element has a 'on_save' parameter" do
147
+ context "with a symbol which represents a function" do
148
+ it "saves the element with the result of a function call and not the value of the instance variable" do
149
+ expect(subject.xpath("address:housenumber").text).to eq "[1313]"
150
+ end
151
+ end
152
+
153
+ context "with a lambda" do
154
+ it "saves the results" do
155
+ expect(subject.xpath('address:date_created').text).to eq "15:00:00 01/01/11"
156
+ end
157
+ end
158
+ end
159
+
160
+ context "when an attribute has a 'on_save' parameter" do
161
+ context "with a lambda" do
162
+ it "saves the result" do
163
+ expect(subject.xpath('@location').text).to eq "Home-live"
164
+ end
165
+ end
166
+ end
167
+
168
+ context "when a has_many has a 'on_save' parameter" do
169
+ context "with a lambda" do
170
+ it "saves the result" do
171
+ dates_updated = subject.xpath('address:dates_updated')
172
+ expect(dates_updated.length).to eq 2
173
+ expect(dates_updated.first.text).to eq "16:01:00 01/01/11"
174
+ expect(dates_updated.last.text).to eq "11:30:01 01/02/11"
175
+ end
176
+ end
177
+ end
178
+
179
+ context "when an element type is a HappyMapper subclass" do
180
+ it "saves attributes" do
181
+ expect(subject.xpath('country:country/@country:countryCode').text).to eq "us"
182
+ end
183
+
184
+ it "saves elements" do
185
+ expect(subject.xpath('country:country/countryName:countryName').text).to eq "USA"
186
+ end
187
+ end
188
+ end
189
+
190
+ context "with a default namespace" do
191
+ it "writes the default namespace to xml without repeating xmlns" do
192
+ recipe = ToXMLWithNamespaces::Recipe.new(:ingredients => ['One Cup Flour', 'Two Scoops of Lovin'])
193
+ expect(recipe.to_xml).to match /xmlns=\"urn:eventis:prodis:onlineapi:1\.0\"/
194
+ end
195
+ end
196
+ end
@@ -0,0 +1,96 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Wildcard Root Tag" do
4
+
5
+ generic_class_xml = %{
6
+ <root>
7
+ <description>some description</description>
8
+ <blarg name='blargname1' href='http://blarg.com'/>
9
+ <blarg name='blargname2' href='http://blarg.com'/>
10
+ <jello name='jelloname' href='http://jello.com'/>
11
+ <subelement>
12
+ <jello name='subjelloname' href='http://ohnojello.com' other='othertext'/>
13
+ </subelement>
14
+ </root>}
15
+
16
+ module GenericBase
17
+ class Base
18
+ include Comparable
19
+ include HappyMapper
20
+
21
+ def initialize(params = {})
22
+ @name = params[:name]
23
+ @href = params[:href]
24
+ @other = params[:other]
25
+ end
26
+
27
+ tag '*'
28
+ attribute :name, String
29
+ attribute :href, String
30
+ attribute :other, String
31
+
32
+ def <=>(compared)
33
+ name <=> compared.name && href <=> compared.href && other <=> compared.other
34
+ end
35
+ end
36
+ class Sub
37
+ include HappyMapper
38
+ tag 'subelement'
39
+ has_one :jello, Base, :tag => 'jello'
40
+ end
41
+ class Root
42
+ include HappyMapper
43
+ tag 'root'
44
+ element :description, String
45
+ has_many :blargs, Base, :tag => 'blarg', :xpath => '.'
46
+ has_many :jellos, Base, :tag => 'jello', :xpath => '.'
47
+ has_many :subjellos, Base, :tag => 'jello', :xpath => 'subelement/.', :read_only => true
48
+ has_one :sub_element, Sub
49
+ end
50
+ end
51
+
52
+ describe "can have generic classes using tag '*'" do
53
+
54
+ let(:subject) { GenericBase::Root.parse(generic_class_xml) }
55
+ let(:xml) { Nokogiri::XML(subject.to_xml) }
56
+
57
+ it 'should map different elements to same class' do
58
+ subject.blargs.should_not be_nil
59
+ subject.jellos.should_not be_nil
60
+ end
61
+
62
+ it 'should filter on xpath appropriately' do
63
+ subject.blargs.should have(2).items
64
+ subject.jellos.should have(1).items
65
+ subject.subjellos.should have(1).items
66
+ end
67
+
68
+ def base_with(name,href,other)
69
+ GenericBase::Base.new(:name => name,:href => href,:other => other)
70
+ end
71
+
72
+ it 'should parse correct values onto generic class' do
73
+ expect(subject.blargs[0]).to eq base_with('blargname1','http://blarg.com',nil)
74
+ expect(subject.blargs[1]).to eq base_with('blargname2','http://blarg.com',nil)
75
+ expect(subject.jellos[0]).to eq base_with('jelloname','http://jello.com',nil)
76
+ expect(subject.subjellos[0]).to eq base_with('subjelloname','http://ohnojello.com','othertext')
77
+ end
78
+
79
+ def validate_xpath(xpath,name,href,other)
80
+ expect(xml.xpath("#{xpath}/@name").text).to eq name
81
+ expect(xml.xpath("#{xpath}/@href").text).to eq href
82
+ expect(xml.xpath("#{xpath}/@other").text).to eq other
83
+ end
84
+
85
+ it 'should #to_xml using parent element tag name' do
86
+ xml.xpath('/root/description').text.should == 'some description'
87
+ validate_xpath("/root/blarg[1]","blargname1","http://blarg.com","")
88
+ validate_xpath("/root/blarg[2]","blargname2","http://blarg.com","")
89
+ validate_xpath("/root/jello[1]","jelloname","http://jello.com","")
90
+ end
91
+
92
+ it "should properly respect child HappyMapper tags if tag isn't provided on the element defintion" do
93
+ xml.xpath('root/subelement').should have(1).item
94
+ end
95
+ end
96
+ end
data/spec/wrap_spec.rb ADDED
@@ -0,0 +1,82 @@
1
+ require 'spec_helper'
2
+
3
+ describe "wrap which allows you to specify a wrapper element" do
4
+
5
+ module Wrap
6
+ class SubClass
7
+ include HappyMapper
8
+ tag 'subclass'
9
+ attribute :myattr, String
10
+ has_many :items, String, :tag => 'item'
11
+ end
12
+ class Root
13
+ include HappyMapper
14
+ tag 'root'
15
+ attribute :attr1, String
16
+ element :name, String
17
+ wrap 'mywraptag' do
18
+ element :description, String
19
+ has_one :subclass, SubClass
20
+ end
21
+ element :number, Integer
22
+ end
23
+ end
24
+
25
+ describe ".parse" do
26
+ context "when given valid XML" do
27
+ let(:subject) { Wrap::Root.parse fixture_file('wrapper.xml') }
28
+
29
+ it 'sets the values correctly' do
30
+ expect(subject.attr1).to eq 'somevalue'
31
+ expect(subject.name).to eq 'myname'
32
+ expect(subject.description).to eq 'some description'
33
+ expect(subject.subclass.myattr).to eq 'attrvalue'
34
+ expect(subject.subclass.items).to have(2).items
35
+ expect(subject.subclass.items[0]).to eq 'item1'
36
+ expect(subject.subclass.items[1]).to eq 'item2'
37
+ expect(subject.number).to eq 12345
38
+ end
39
+ end
40
+
41
+ context "when initialized without XML" do
42
+ let(:subject) { Wrap::Root.new }
43
+
44
+ it "anonymous classes are created so nil class values does not occur" do
45
+ expect { subject.description = 'anything' }.to_not raise_error
46
+ end
47
+ end
48
+ end
49
+
50
+ describe ".to_xml" do
51
+ let(:subject) do
52
+ root = Wrap::Root.new
53
+ root.attr1 = 'somevalue'
54
+ root.name = 'myname'
55
+ root.description = 'some description'
56
+ root.number = 12345
57
+
58
+ subclass = Wrap::SubClass.new
59
+ subclass.myattr = 'attrvalue'
60
+ subclass.items = []
61
+ subclass.items << 'item1'
62
+ subclass.items << 'item2'
63
+
64
+ root.subclass = subclass
65
+
66
+ root
67
+ end
68
+
69
+ it "generates the correct xml" do
70
+ xml = Nokogiri::XML(subject.to_xml)
71
+ expect(xml.xpath('/root/@attr1').text).to eq 'somevalue'
72
+ expect(xml.xpath('/root/name').text).to eq 'myname'
73
+ expect(xml.xpath('/root/mywraptag/description').text).to eq 'some description'
74
+ expect(xml.xpath('/root/mywraptag/subclass/@myattr').text).to eq 'attrvalue'
75
+ expect(xml.xpath('/root/mywraptag/subclass/item')).to have(2).items
76
+ expect(xml.xpath('/root/mywraptag/subclass/item[1]').text).to eq 'item1'
77
+ expect(xml.xpath('/root/mywraptag/subclass/item[2]').text).to eq 'item2'
78
+ expect(xml.xpath('/root/number').text).to eq '12345'
79
+ end
80
+
81
+ end
82
+ end
data/spec/xpath_spec.rb CHANGED
@@ -1,88 +1,89 @@
1
- require File.dirname(__FILE__) + '/spec_helper.rb'
2
-
3
- test_xml = %{
4
- <rss>
5
- <amazing:item xmlns:amazing="http://www.amazing.com/amazing" xmlns:different="http://www.different.com/different">
6
- <amazing:title>Test XML</amazing:title>
7
- <different:link href="different_link" />
8
- <amazing:link href="link_to_resources" />
9
- <amazing:subitem>
10
- <amazing:detail>I want to parse this</amazing:detail>
11
- <amazing:more first="this one">more 1</amazing:more>
12
- <amazing:more alternative="another one">more 2</amazing:more>
13
- </amazing:subitem>
14
- <amazing:baby>
15
- <amazing:name>Jumbo</amazing:name>
16
- </amazing:baby>
17
- </amazing:item>
18
- </rss>
19
- }
20
-
21
- class Item
22
- include HappyMapper
23
-
24
- tag 'item'
25
- namespace 'amazing'
26
-
27
- element :title, String
28
- attribute :link, String, :xpath => 'amazing:link/@href'
29
- has_one :different_link, String, :xpath => 'different:link/@href'
30
- element :detail, String, :xpath => 'amazing:subitem/amazing:detail'
31
- has_many :more_details_text, String, :xpath => 'amazing:subitem/amazing:more'
32
- has_many :more_details, String, :xpath => 'amazing:subitem/amazing:more/@first|amazing:subitem/amazing:more/@alternative'
33
- has_many :more_details_alternative, String, :xpath => 'amazing:subitem/amazing:more/@*'
34
-
35
- has_one :baby, 'Baby', :name => 'baby', :namespace => 'amazing'
1
+ require 'spec_helper'
36
2
 
37
- end
3
+ describe "Specifying elements and attributes with an xpath" do
38
4
 
39
- class Baby
40
- include HappyMapper
5
+ class Item
6
+ include HappyMapper
41
7
 
42
- has_one :name, String
43
- end
8
+ tag 'item'
9
+ namespace 'amazing'
44
10
 
45
- describe HappyMapper do
11
+ element :title, String
12
+ attribute :link, String, :xpath => 'amazing:link/@href'
13
+ has_one :different_link, String, :xpath => 'different:link/@href'
14
+ element :detail, String, :xpath => 'amazing:subitem/amazing:detail'
15
+ has_many :more_details_text, String, :xpath => 'amazing:subitem/amazing:more'
16
+ has_many :more_details, String, :xpath => 'amazing:subitem/amazing:more/@first|amazing:subitem/amazing:more/@alternative'
17
+ has_many :more_details_alternative, String, :xpath => 'amazing:subitem/amazing:more/@*'
18
+
19
+ has_one :baby, 'Baby', :name => 'baby', :namespace => 'amazing'
20
+
21
+ end
22
+
23
+ class Baby
24
+ include HappyMapper
25
+
26
+ has_one :name, String
27
+ end
28
+
29
+ let(:subject) { Item.parse(xml_string,:single => true) }
30
+
31
+ let(:xml_string) do
32
+ %{
33
+ <rss>
34
+ <amazing:item xmlns:amazing="http://www.amazing.com/amazing" xmlns:different="http://www.different.com/different">
35
+ <amazing:title>Test XML</amazing:title>
36
+ <different:link href="different_link" />
37
+ <amazing:link href="link_to_resources" />
38
+ <amazing:subitem>
39
+ <amazing:detail>I want to parse this</amazing:detail>
40
+ <amazing:more first="this one">more 1</amazing:more>
41
+ <amazing:more alternative="another one">more 2</amazing:more>
42
+ </amazing:subitem>
43
+ <amazing:baby>
44
+ <amazing:name>Jumbo</amazing:name>
45
+ </amazing:baby>
46
+ </amazing:item>
47
+ </rss>
48
+ }
49
+ end
46
50
 
47
51
  it "should have a title" do
48
- @item.title.should == "Test XML"
52
+ expect(subject.title).to eq "Test XML"
49
53
  end
50
54
 
51
55
  it "should find the link href value" do
52
- @item.link.should == 'link_to_resources'
56
+ expect(subject.link).to eq 'link_to_resources'
53
57
  end
54
58
 
55
59
  it "should find the link href value" do
56
- @item.different_link.should == 'different_link'
60
+ expect(subject.different_link).to eq 'different_link'
57
61
  end
58
62
 
59
63
  it "should find this subitem based on the xpath" do
60
- @item.detail.should == 'I want to parse this'
64
+ expect(subject.detail).to eq 'I want to parse this'
61
65
  end
62
66
 
63
67
  it "should find the subitems based on the xpath" do
64
- @item.more_details_text.length.should == 2
65
- @item.more_details_text.first.should == "more 1"
66
- @item.more_details_text.last.should == "more 2"
68
+ expect(subject.more_details_text).to have(2).items
69
+ expect(subject.more_details_text.first).to eq "more 1"
70
+ expect(subject.more_details_text.last).to eq "more 2"
67
71
  end
68
72
 
69
73
  it "should find the subitems based on the xpath" do
70
- @item.more_details.length.should == 2
71
- @item.more_details.first.should == "this one"
72
- @item.more_details.last.should == "another one"
74
+ expect(subject.more_details).to have(2).items
75
+ expect(subject.more_details.first).to eq "this one"
76
+ expect(subject.more_details.last).to eq "another one"
73
77
  end
74
78
 
75
79
  it "should find the subitems based on the xpath" do
76
- @item.more_details.length.should == 2
77
- @item.more_details_alternative.first.should == "this one"
78
- @item.more_details_alternative.last.should == "another one"
79
- end
80
- it "should have a baby name" do
81
- @item.baby.name.should == "Jumbo"
80
+ expect(subject.more_details_alternative).to have(2).items
81
+ expect(subject.more_details_alternative.first).to eq "this one"
82
+ expect(subject.more_details_alternative.last).to eq "another one"
82
83
  end
83
84
 
84
- before(:all) do
85
- @item = Item.parse(test_xml,:single => true)
85
+ it "should have a baby name" do
86
+ expect(subject.baby.name).to eq "Jumbo"
86
87
  end
87
88
 
88
89
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nokogiri-happymapper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.6
5
- prerelease:
4
+ version: 0.5.7
6
5
  platform: ruby
7
6
  authors:
8
7
  - Damien Le Berrigaud
@@ -19,7 +18,6 @@ dependencies:
19
18
  - !ruby/object:Gem::Dependency
20
19
  name: nokogiri
21
20
  requirement: !ruby/object:Gem::Requirement
22
- none: false
23
21
  requirements:
24
22
  - - ~>
25
23
  - !ruby/object:Gem::Version
@@ -27,7 +25,6 @@ dependencies:
27
25
  type: :runtime
28
26
  prerelease: false
29
27
  version_requirements: !ruby/object:Gem::Requirement
30
- none: false
31
28
  requirements:
32
29
  - - ~>
33
30
  - !ruby/object:Gem::Version
@@ -35,7 +32,6 @@ dependencies:
35
32
  - !ruby/object:Gem::Dependency
36
33
  name: rspec
37
34
  requirement: !ruby/object:Gem::Requirement
38
- none: false
39
35
  requirements:
40
36
  - - ~>
41
37
  - !ruby/object:Gem::Version
@@ -43,29 +39,30 @@ dependencies:
43
39
  type: :development
44
40
  prerelease: false
45
41
  version_requirements: !ruby/object:Gem::Requirement
46
- none: false
47
42
  requirements:
48
43
  - - ~>
49
44
  - !ruby/object:Gem::Version
50
45
  version: '2.8'
51
46
  description: Object to XML Mapping Library, using Nokogiri (fork from John Nunemaker's
52
47
  Happymapper)
53
- email:
48
+ email: franklin.webber@gmail.com
54
49
  executables: []
55
50
  extensions: []
56
51
  extra_rdoc_files:
57
52
  - README.md
58
53
  - CHANGELOG.md
59
- - TODO
60
54
  files:
61
55
  - lib/happymapper.rb
56
+ - lib/happymapper/anonymous_mapper.rb
62
57
  - lib/happymapper/attribute.rb
63
58
  - lib/happymapper/element.rb
64
59
  - lib/happymapper/item.rb
60
+ - lib/happymapper/supported_types.rb
65
61
  - lib/happymapper/text_node.rb
62
+ - lib/happymapper/version.rb
66
63
  - README.md
67
64
  - CHANGELOG.md
68
- - TODO
65
+ - spec/attribute_default_value_spec.rb
69
66
  - spec/fixtures/address.xml
70
67
  - spec/fixtures/ambigous_items.xml
71
68
  - spec/fixtures/analytics.xml
@@ -92,45 +89,47 @@ files:
92
89
  - spec/fixtures/statuses.xml
93
90
  - spec/fixtures/subclass_namespace.xml
94
91
  - spec/fixtures/wrapper.xml
95
- - spec/happymapper_attribute_spec.rb
96
- - spec/happymapper_element_spec.rb
97
- - spec/happymapper_generic_base_spec.rb
98
- - spec/happymapper_item_spec.rb
92
+ - spec/happymapper/attribute_spec.rb
93
+ - spec/happymapper/element_spec.rb
94
+ - spec/happymapper/item_spec.rb
95
+ - spec/happymapper/text_node_spec.rb
96
+ - spec/happymapper_parse_spec.rb
99
97
  - spec/happymapper_spec.rb
100
- - spec/happymapper_text_node_spec.rb
101
- - spec/happymapper_to_xml_namespaces_spec.rb
102
- - spec/happymapper_to_xml_spec.rb
103
- - spec/happymapper_wrap_spec.rb
104
98
  - spec/ignay_spec.rb
105
- - spec/parse_instance_spec.rb
99
+ - spec/inheritance_spec.rb
100
+ - spec/parse_with_object_to_update_spec.rb
106
101
  - spec/spec_helper.rb
102
+ - spec/to_xml_spec.rb
103
+ - spec/to_xml_with_namespaces_spec.rb
104
+ - spec/wilcard_tag_name_spec.rb
105
+ - spec/wrap_spec.rb
107
106
  - spec/xpath_spec.rb
108
107
  homepage: http://github.com/dam5s/happymapper
109
- licenses: []
110
- post_install_message: ! "\n Thank you for installing nokogiri-happymapper 0.5.6 /
111
- .\n\n Changes:\n \n\n"
108
+ licenses:
109
+ - MIT
110
+ metadata: {}
111
+ post_install_message:
112
112
  rdoc_options: []
113
113
  require_paths:
114
114
  - lib
115
115
  required_ruby_version: !ruby/object:Gem::Requirement
116
- none: false
117
116
  requirements:
118
117
  - - ! '>='
119
118
  - !ruby/object:Gem::Version
120
119
  version: '0'
121
120
  required_rubygems_version: !ruby/object:Gem::Requirement
122
- none: false
123
121
  requirements:
124
122
  - - ! '>='
125
123
  - !ruby/object:Gem::Version
126
124
  version: '0'
127
125
  requirements: []
128
126
  rubyforge_project:
129
- rubygems_version: 1.8.24
127
+ rubygems_version: 2.0.3
130
128
  signing_key:
131
129
  specification_version: 3
132
130
  summary: Provides a simple way to map XML to Ruby Objects and back again.
133
131
  test_files:
132
+ - spec/attribute_default_value_spec.rb
134
133
  - spec/fixtures/address.xml
135
134
  - spec/fixtures/ambigous_items.xml
136
135
  - spec/fixtures/analytics.xml
@@ -157,16 +156,18 @@ test_files:
157
156
  - spec/fixtures/statuses.xml
158
157
  - spec/fixtures/subclass_namespace.xml
159
158
  - spec/fixtures/wrapper.xml
160
- - spec/happymapper_attribute_spec.rb
161
- - spec/happymapper_element_spec.rb
162
- - spec/happymapper_generic_base_spec.rb
163
- - spec/happymapper_item_spec.rb
159
+ - spec/happymapper/attribute_spec.rb
160
+ - spec/happymapper/element_spec.rb
161
+ - spec/happymapper/item_spec.rb
162
+ - spec/happymapper/text_node_spec.rb
163
+ - spec/happymapper_parse_spec.rb
164
164
  - spec/happymapper_spec.rb
165
- - spec/happymapper_text_node_spec.rb
166
- - spec/happymapper_to_xml_namespaces_spec.rb
167
- - spec/happymapper_to_xml_spec.rb
168
- - spec/happymapper_wrap_spec.rb
169
165
  - spec/ignay_spec.rb
170
- - spec/parse_instance_spec.rb
166
+ - spec/inheritance_spec.rb
167
+ - spec/parse_with_object_to_update_spec.rb
171
168
  - spec/spec_helper.rb
169
+ - spec/to_xml_spec.rb
170
+ - spec/to_xml_with_namespaces_spec.rb
171
+ - spec/wilcard_tag_name_spec.rb
172
+ - spec/wrap_spec.rb
172
173
  - spec/xpath_spec.rb
data/TODO DELETED
File without changes