happymapper 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- data/History +4 -0
- data/Manifest +3 -0
- data/TODO +1 -2
- data/examples/dashed_elements.rb +23 -0
- data/happymapper.gemspec +3 -3
- data/lib/happymapper.rb +12 -2
- data/lib/happymapper/version.rb +1 -1
- data/spec/fixtures/commit.xml +52 -0
- data/spec/fixtures/posts.xml +1 -1
- data/spec/happymapper_spec.rb +44 -1
- metadata +5 -3
data/History
CHANGED
data/Manifest
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
examples/amazon.rb
|
2
2
|
examples/current_weather.rb
|
3
|
+
examples/dashed_elements.rb
|
3
4
|
examples/post.rb
|
4
5
|
examples/twitter.rb
|
6
|
+
happymapper.gemspec
|
5
7
|
History
|
6
8
|
lib/happymapper/attribute.rb
|
7
9
|
lib/happymapper/element.rb
|
@@ -14,6 +16,7 @@ Manifest
|
|
14
16
|
Rakefile
|
15
17
|
README
|
16
18
|
spec/fixtures/address.xml
|
19
|
+
spec/fixtures/commit.xml
|
17
20
|
spec/fixtures/current_weather.xml
|
18
21
|
spec/fixtures/pita.xml
|
19
22
|
spec/fixtures/posts.xml
|
data/TODO
CHANGED
@@ -1,2 +1 @@
|
|
1
|
-
* doesn't do xml namespaces really (does work with default namespace though)
|
2
|
-
* switch gem management to echoe as i did with httparty
|
1
|
+
* doesn't do xml namespaces really (does work with default namespace though)
|
@@ -0,0 +1,23 @@
|
|
1
|
+
dir = File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
require File.join(dir, 'happymapper')
|
3
|
+
|
4
|
+
file_contents = File.read(dir + '/../spec/fixtures/commit.xml')
|
5
|
+
|
6
|
+
module GitHub
|
7
|
+
class Commit
|
8
|
+
include HappyMapper
|
9
|
+
|
10
|
+
tag "commit"
|
11
|
+
|
12
|
+
element :url, String
|
13
|
+
element :tree, String
|
14
|
+
element :message, String
|
15
|
+
element :id, String
|
16
|
+
element :'committed-date', Date
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
commits = GitHub::Commit.parse(file_contents)
|
21
|
+
commits.each do |commit|
|
22
|
+
puts commit.committed_date, commit.url, commit.id
|
23
|
+
end
|
data/happymapper.gemspec
CHANGED
@@ -2,15 +2,15 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{happymapper}
|
5
|
-
s.version = "0.1.
|
5
|
+
s.version = "0.1.7"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["John Nunemaker"]
|
9
|
-
s.date = %q{2009-01-
|
9
|
+
s.date = %q{2009-01-28}
|
10
10
|
s.description = %q{object to xml mapping library}
|
11
11
|
s.email = %q{nunemaker@gmail.com}
|
12
12
|
s.extra_rdoc_files = ["lib/happymapper/attribute.rb", "lib/happymapper/element.rb", "lib/happymapper/item.rb", "lib/happymapper/version.rb", "lib/happymapper.rb", "lib/libxml_ext/libxml_helper.rb", "README", "TODO"]
|
13
|
-
s.files = ["examples/amazon.rb", "examples/current_weather.rb", "examples/post.rb", "examples/twitter.rb", "History", "lib/happymapper/attribute.rb", "lib/happymapper/element.rb", "lib/happymapper/item.rb", "lib/happymapper/version.rb", "lib/happymapper.rb", "lib/libxml_ext/libxml_helper.rb", "License", "Manifest", "Rakefile", "README", "spec/fixtures/address.xml", "spec/fixtures/current_weather.xml", "spec/fixtures/pita.xml", "spec/fixtures/posts.xml", "spec/fixtures/radar.xml", "spec/fixtures/statuses.xml", "spec/happymapper_attribute_spec.rb", "spec/happymapper_element_spec.rb", "spec/happymapper_item_spec.rb", "spec/happymapper_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "TODO", "website/css/common.css", "website/index.html"
|
13
|
+
s.files = ["examples/amazon.rb", "examples/current_weather.rb", "examples/dashed_elements.rb", "examples/post.rb", "examples/twitter.rb", "happymapper.gemspec", "History", "lib/happymapper/attribute.rb", "lib/happymapper/element.rb", "lib/happymapper/item.rb", "lib/happymapper/version.rb", "lib/happymapper.rb", "lib/libxml_ext/libxml_helper.rb", "License", "Manifest", "Rakefile", "README", "spec/fixtures/address.xml", "spec/fixtures/commit.xml", "spec/fixtures/current_weather.xml", "spec/fixtures/pita.xml", "spec/fixtures/posts.xml", "spec/fixtures/radar.xml", "spec/fixtures/statuses.xml", "spec/happymapper_attribute_spec.rb", "spec/happymapper_element_spec.rb", "spec/happymapper_item_spec.rb", "spec/happymapper_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "TODO", "website/css/common.css", "website/index.html"]
|
14
14
|
s.has_rdoc = true
|
15
15
|
s.homepage = %q{http://happymapper.rubyforge.org}
|
16
16
|
s.post_install_message = %q{May you have many happy mappings!}
|
data/lib/happymapper.rb
CHANGED
@@ -99,13 +99,15 @@ module HappyMapper
|
|
99
99
|
def create_collection(nodes, namespace=nil)
|
100
100
|
nodes.inject([]) do |acc, el|
|
101
101
|
obj = new
|
102
|
-
attributes.each { |attr| obj.send("#{attr.name}=", attr.from_xml_node(el)) }
|
103
|
-
elements.each { |elem| obj.send("#{elem.name}=", elem.from_xml_node(el, namespace)) }
|
102
|
+
attributes.each { |attr| obj.send("#{normalize_name attr.name}=", attr.from_xml_node(el)) }
|
103
|
+
elements.each { |elem| obj.send("#{normalize_name elem.name}=", elem.from_xml_node(el, namespace)) }
|
104
104
|
acc << obj
|
105
105
|
end
|
106
106
|
end
|
107
107
|
|
108
108
|
def create_getter(name)
|
109
|
+
name = normalize_name(name)
|
110
|
+
|
109
111
|
class_eval <<-EOS, __FILE__, __LINE__
|
110
112
|
def #{name}
|
111
113
|
@#{name}
|
@@ -114,6 +116,8 @@ module HappyMapper
|
|
114
116
|
end
|
115
117
|
|
116
118
|
def create_setter(name)
|
119
|
+
name = normalize_name(name)
|
120
|
+
|
117
121
|
class_eval <<-EOS, __FILE__, __LINE__
|
118
122
|
def #{name}=(value)
|
119
123
|
@#{name} = value
|
@@ -122,9 +126,15 @@ module HappyMapper
|
|
122
126
|
end
|
123
127
|
|
124
128
|
def create_accessor(name)
|
129
|
+
name = normalize_name(name)
|
130
|
+
|
125
131
|
create_getter(name)
|
126
132
|
create_setter(name)
|
127
133
|
end
|
134
|
+
|
135
|
+
def normalize_name(name)
|
136
|
+
name.gsub('-', '_')
|
137
|
+
end
|
128
138
|
end
|
129
139
|
end
|
130
140
|
|
data/lib/happymapper/version.rb
CHANGED
@@ -0,0 +1,52 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<commit>
|
3
|
+
<removed type="array">
|
4
|
+
<removed>
|
5
|
+
<filename>commands.rb</filename>
|
6
|
+
</removed>
|
7
|
+
<removed>
|
8
|
+
<filename>helpers.rb</filename>
|
9
|
+
</removed>
|
10
|
+
</removed>
|
11
|
+
<added type="array">
|
12
|
+
<added>
|
13
|
+
<filename>commands/commands.rb</filename>
|
14
|
+
</added>
|
15
|
+
<added>
|
16
|
+
<filename>commands/helpers.rb</filename>
|
17
|
+
</added>
|
18
|
+
</added>
|
19
|
+
<message>move commands.rb and helpers.rb into commands/ dir</message>
|
20
|
+
<modified type="array">
|
21
|
+
<modified>
|
22
|
+
<diff>@@ -56,7 +56,7 @@ module GitHub
|
23
|
+
end
|
24
|
+
|
25
|
+
def load(file)
|
26
|
+
- file[0] == ?/ ? super : super(BasePath + "/#{file}")
|
27
|
+
+ file[0] == ?/ ? super : super(BasePath + "/commands/#{file}")
|
28
|
+
end
|
29
|
+
|
30
|
+
def debug(*messages)</diff>
|
31
|
+
<filename>lib/github.rb</filename>
|
32
|
+
</modified>
|
33
|
+
</modified>
|
34
|
+
<parents type="array">
|
35
|
+
<parent>
|
36
|
+
<id>d462d2a2e60438ded3dd9e8e6593ca4146c5a0ba</id>
|
37
|
+
</parent>
|
38
|
+
</parents>
|
39
|
+
<url>http://github.com/defunkt/github-gem/commit/c26d4ce9807ecf57d3f9eefe19ae64e75bcaaa8b</url>
|
40
|
+
<author>
|
41
|
+
<name>Chris Wanstrath</name>
|
42
|
+
<email>chris@ozmm.org</email>
|
43
|
+
</author>
|
44
|
+
<id>c26d4ce9807ecf57d3f9eefe19ae64e75bcaaa8b</id>
|
45
|
+
<committed-date>2008-03-02T16:45:41-08:00</committed-date>
|
46
|
+
<authored-date>2008-03-02T16:45:41-08:00</authored-date>
|
47
|
+
<tree>28a1a1ca3e663d35ba8bf07d3f1781af71359b76</tree>
|
48
|
+
<committer>
|
49
|
+
<name>Chris Wanstrath</name>
|
50
|
+
<email>chris@ozmm.org</email>
|
51
|
+
</committer>
|
52
|
+
</commit>
|
data/spec/fixtures/posts.xml
CHANGED
@@ -20,4 +20,4 @@
|
|
20
20
|
<post href="http://codeclimber.blogspot.com/2008/06/using-ruby-for-imap-with-gmail.html" hash="33bbf2492beac5fbf1fc167014060067" description="CodeClimber: using Ruby for IMAP with Gmail" tag="email gems gmail google imap rails railstips ruby" time="2008-07-05T20:06:47Z" others="118" extended="how to check gmail using ruby's IMAP libraries. the key is to use the login method instead of the authenticate one."/>
|
21
21
|
<post href="http://xullicious.blogspot.com/2008/07/updated-curb-multi-interface-patch.html" hash="f95dcc012bdc13bc26bace3ceed10656" description="Xul for thought: Updated curb multi interface patch" tag="curl ruby http" time="2008-07-03T21:52:45Z" others="1" extended="Really cool multi curl stuff to rapidly hit urls."/>
|
22
22
|
</posts>
|
23
|
-
<!-- fe04.api.del.ac4.yahoo.net uncompressed/chunked Sat Aug 9 00:20:11 PDT 2008 -->
|
23
|
+
<!-- fe04.api.del.ac4.yahoo.net uncompressed/chunked Sat Aug 9 00:20:11 PDT 2008 -->
|
data/spec/happymapper_spec.rb
CHANGED
@@ -89,6 +89,20 @@ module PITA
|
|
89
89
|
end
|
90
90
|
end
|
91
91
|
|
92
|
+
module GitHub
|
93
|
+
class Commit
|
94
|
+
include HappyMapper
|
95
|
+
|
96
|
+
tag "commit"
|
97
|
+
|
98
|
+
element :url, String
|
99
|
+
element :tree, String
|
100
|
+
element :message, String
|
101
|
+
element :id, String
|
102
|
+
element :'committed-date', Date
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
92
106
|
describe HappyMapper do
|
93
107
|
|
94
108
|
describe "being included into another class" do
|
@@ -112,6 +126,12 @@ describe HappyMapper do
|
|
112
126
|
}.should change(Foo, :attributes)
|
113
127
|
end
|
114
128
|
|
129
|
+
it "should allow adding an attribute containing a dash" do
|
130
|
+
lambda {
|
131
|
+
Foo.attribute :'bar-baz', String
|
132
|
+
}.should change(Foo, :attributes)
|
133
|
+
end
|
134
|
+
|
115
135
|
it "should be able to get all attributes in array" do
|
116
136
|
Foo.attribute :name, String
|
117
137
|
Foo.attributes.size.should == 1
|
@@ -122,6 +142,13 @@ describe HappyMapper do
|
|
122
142
|
Foo.element :name, String
|
123
143
|
}.should change(Foo, :elements)
|
124
144
|
end
|
145
|
+
|
146
|
+
it "should allow adding an element containing a dash" do
|
147
|
+
lambda {
|
148
|
+
Foo.element :'bar-baz', String
|
149
|
+
}.should change(Foo, :elements)
|
150
|
+
|
151
|
+
end
|
125
152
|
|
126
153
|
it "should be able to get all elements in array" do
|
127
154
|
Foo.element(:name, String)
|
@@ -291,4 +318,20 @@ describe HappyMapper do
|
|
291
318
|
@third.places[1].name.should == 'Home'
|
292
319
|
end
|
293
320
|
end
|
294
|
-
|
321
|
+
|
322
|
+
describe "#parse (with xml that has elements with dashes in them)" do
|
323
|
+
before do
|
324
|
+
file_contents = File.read(File.dirname(__FILE__) + '/fixtures/commit.xml')
|
325
|
+
@commit = GitHub::Commit.parse(file_contents).first
|
326
|
+
end
|
327
|
+
|
328
|
+
it "should properly create objects" do
|
329
|
+
@commit.message.should == "move commands.rb and helpers.rb into commands/ dir"
|
330
|
+
@commit.url.should == "http://github.com/defunkt/github-gem/commit/c26d4ce9807ecf57d3f9eefe19ae64e75bcaaa8b"
|
331
|
+
@commit.id.should == "c26d4ce9807ecf57d3f9eefe19ae64e75bcaaa8b"
|
332
|
+
@commit.committed_date.should == Date.parse("2008-03-02T16:45:41-08:00")
|
333
|
+
@commit.tree.should == "28a1a1ca3e663d35ba8bf07d3f1781af71359b76"
|
334
|
+
end
|
335
|
+
|
336
|
+
end
|
337
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: happymapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Nunemaker
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-01-
|
12
|
+
date: 2009-01-28 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -50,8 +50,10 @@ extra_rdoc_files:
|
|
50
50
|
files:
|
51
51
|
- examples/amazon.rb
|
52
52
|
- examples/current_weather.rb
|
53
|
+
- examples/dashed_elements.rb
|
53
54
|
- examples/post.rb
|
54
55
|
- examples/twitter.rb
|
56
|
+
- happymapper.gemspec
|
55
57
|
- History
|
56
58
|
- lib/happymapper/attribute.rb
|
57
59
|
- lib/happymapper/element.rb
|
@@ -64,6 +66,7 @@ files:
|
|
64
66
|
- Rakefile
|
65
67
|
- README
|
66
68
|
- spec/fixtures/address.xml
|
69
|
+
- spec/fixtures/commit.xml
|
67
70
|
- spec/fixtures/current_weather.xml
|
68
71
|
- spec/fixtures/pita.xml
|
69
72
|
- spec/fixtures/posts.xml
|
@@ -78,7 +81,6 @@ files:
|
|
78
81
|
- TODO
|
79
82
|
- website/css/common.css
|
80
83
|
- website/index.html
|
81
|
-
- happymapper.gemspec
|
82
84
|
has_rdoc: true
|
83
85
|
homepage: http://happymapper.rubyforge.org
|
84
86
|
post_install_message: May you have many happy mappings!
|