nokogiri-happymapper 0.3.3
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/History +59 -0
- data/License +20 -0
- data/Manifest +45 -0
- data/README +61 -0
- data/Rakefile +28 -0
- data/TODO +0 -0
- data/examples/amazon.rb +34 -0
- data/examples/current_weather.rb +21 -0
- data/examples/dashed_elements.rb +20 -0
- data/examples/family_tree.rb +48 -0
- data/examples/post.rb +19 -0
- data/examples/twitter.rb +37 -0
- data/lib/happymapper.rb +157 -0
- data/lib/happymapper/attribute.rb +3 -0
- data/lib/happymapper/element.rb +3 -0
- data/lib/happymapper/item.rb +198 -0
- data/lib/happymapper/text_node.rb +3 -0
- data/lib/happymapper/version.rb +3 -0
- data/nokogiri-happymapper.gemspec +34 -0
- data/spec/fixtures/address.xml +8 -0
- data/spec/fixtures/analytics.xml +61 -0
- data/spec/fixtures/commit.xml +52 -0
- data/spec/fixtures/current_weather.xml +89 -0
- data/spec/fixtures/dictionary.xml +20 -0
- data/spec/fixtures/family_tree.xml +21 -0
- data/spec/fixtures/lastfm.xml +355 -0
- data/spec/fixtures/multiple_namespaces.xml +170 -0
- data/spec/fixtures/multiple_primitives.xml +5 -0
- data/spec/fixtures/pita.xml +133 -0
- data/spec/fixtures/posts.xml +23 -0
- data/spec/fixtures/product_default_namespace.xml +17 -0
- data/spec/fixtures/product_no_namespace.xml +10 -0
- data/spec/fixtures/product_single_namespace.xml +10 -0
- data/spec/fixtures/quarters.xml +19 -0
- data/spec/fixtures/radar.xml +21 -0
- data/spec/fixtures/statuses.xml +422 -0
- data/spec/happymapper_attribute_spec.rb +21 -0
- data/spec/happymapper_element_spec.rb +21 -0
- data/spec/happymapper_item_spec.rb +115 -0
- data/spec/happymapper_spec.rb +735 -0
- data/spec/happymapper_text_node_spec.rb +21 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +13 -0
- data/website/css/common.css +47 -0
- data/website/index.html +98 -0
- metadata +120 -0
@@ -0,0 +1,21 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
+
|
3
|
+
describe HappyMapper::Attribute do
|
4
|
+
describe "initialization" do
|
5
|
+
before do
|
6
|
+
@attr = HappyMapper::TextNode.new(:foo, String)
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'should know that it is a text node' do
|
10
|
+
@attr.text_node?.should be_true
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should know that it is NOT an element' do
|
14
|
+
@attr.element?.should be_false
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'should know that it is NOT an attribute' do
|
18
|
+
@attr.attribute?.should be_false
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/spec/spec.opts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--colour
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
begin
|
2
|
+
require 'spec'
|
3
|
+
rescue LoadError
|
4
|
+
require 'rubygems'
|
5
|
+
gem 'rspec'
|
6
|
+
require 'spec'
|
7
|
+
end
|
8
|
+
|
9
|
+
require File.join(File.dirname(__FILE__), '..', 'lib', 'happymapper')
|
10
|
+
|
11
|
+
def fixture_file(filename)
|
12
|
+
File.read(File.dirname(__FILE__) + "/fixtures/#{filename}")
|
13
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
@media screen, projection {
|
2
|
+
/*
|
3
|
+
Copyright (c) 2007, Yahoo! Inc. All rights reserved.
|
4
|
+
Code licensed under the BSD License:
|
5
|
+
http://developer.yahoo.net/yui/license.txt
|
6
|
+
version: 2.2.0
|
7
|
+
*/
|
8
|
+
body {font:13px arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;}table {font-size:inherit;font:100%;}select, input, textarea {font:99% arial,helvetica,clean,sans-serif;}pre, code {font:115% monospace;*font-size:100%;}body * {line-height:1.22em;}
|
9
|
+
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}/*ol,ul {list-style:none;}*/caption,th {text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym {border:0;}
|
10
|
+
/* end of yahoo reset and fonts */
|
11
|
+
|
12
|
+
body {color:#333; background:#4b1a1a; line-height:1.3;}
|
13
|
+
p {margin:0 0 20px;}
|
14
|
+
a {color:#4b1a1a;}
|
15
|
+
a:hover {text-decoration:none;}
|
16
|
+
strong {font-weight:bold;}
|
17
|
+
em {font-style:italics;}
|
18
|
+
h1,h2,h3,h4,h5,h6 {font-weight:bold;}
|
19
|
+
h1 {font-size:197%; margin:30px 0; color:#4b1a1a;}
|
20
|
+
h2 {font-size:174%; margin:20px 0; color:#b8111a;}
|
21
|
+
h3 {font-size:152%; margin:10px 0;}
|
22
|
+
h4 {font-size:129%; margin:10px 0;}
|
23
|
+
pre {background:#eee; margin:0 0 20px; padding:20px; border:1px solid #ccc; font-size:100%; overflow:auto;}
|
24
|
+
code {font-size:100%; margin:0; padding:0;}
|
25
|
+
ul, ol {margin:10px 0 10px 25px;}
|
26
|
+
ol li {margin:0 0 10px;}
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
div#wrapper {background:#fff; width:560px; margin:0 auto; padding:20px; border:10px solid #bc8c46; border-width:0 10px;}
|
33
|
+
div#header {position:relative; border-bottom:1px dotted; margin:0 0 10px; padding:0 0 10px;}
|
34
|
+
div#header p {margin:0; padding:0;}
|
35
|
+
div#header h1 {margin:0; padding:0;}
|
36
|
+
ul#nav {position:absolute; top:0; right:0; list-style:none; margin:0; padding:0;}
|
37
|
+
ul#nav li {display:inline; padding:0 0 0 5px;}
|
38
|
+
ul#nav li a {}
|
39
|
+
div#content {}
|
40
|
+
div#footer {margin:40px 0 0; border-top:1px dotted; padding:10px 0 0;}
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
}
|
data/website/index.html
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
2
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
5
|
+
<title>HappyMapper by John Nunemaker</title>
|
6
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" />
|
7
|
+
</head>
|
8
|
+
<body>
|
9
|
+
|
10
|
+
<div id="wrapper">
|
11
|
+
<div id="header">
|
12
|
+
<h1>HappyMapper</h1>
|
13
|
+
<p>Object to xml mapping library.</p>
|
14
|
+
|
15
|
+
<ul id="nav">
|
16
|
+
<li><a href="rdoc/">Docs</a></li>
|
17
|
+
<li><a href="http://github.com/jnunemaker/happymapper">Github</a></li>
|
18
|
+
<li><a href="http://jnunemaker.lighthouseapp.com/projects/20014-happy-mapper/overview">Lighthouse</a></li>
|
19
|
+
<li><a href="http://rubyforge.org/projects/happymapper/">Rubyforge</a></li>
|
20
|
+
</ul>
|
21
|
+
</div>
|
22
|
+
|
23
|
+
<div id="content">
|
24
|
+
<h2>Install</h2>
|
25
|
+
<pre><code>$ sudo gem install happymapper</code></pre>
|
26
|
+
|
27
|
+
<h2>Examples</h2>
|
28
|
+
|
29
|
+
<h3>Given the following xml:</h3>
|
30
|
+
<pre><code><statuses type="array">
|
31
|
+
<status>
|
32
|
+
<created_at>Sat Aug 09 05:38:12 +0000 2008</created_at>
|
33
|
+
<id>882281424</id>
|
34
|
+
<text>I so just thought the guy lighting the Olympic torch was falling when he began to run on the wall. Wow that would have been catastrophic.</text>
|
35
|
+
<source>web</source>
|
36
|
+
<truncated>false</truncated>
|
37
|
+
<in_reply_to_status_id>1234</in_reply_to_status_id>
|
38
|
+
<in_reply_to_user_id>12345</in_reply_to_user_id>
|
39
|
+
<favorited></favorited>
|
40
|
+
<user>
|
41
|
+
<id>4243</id>
|
42
|
+
<name>John Nunemaker</name>
|
43
|
+
<screen_name>jnunemaker</screen_name>
|
44
|
+
<location>Mishawaka, IN, US</location>
|
45
|
+
<description>Loves his wife, ruby, notre dame football and iu basketball</description>
|
46
|
+
<profile_image_url>http://s3.amazonaws.com/twitter_production/profile_images/53781608/Photo_75_normal.jpg</profile_image_url>
|
47
|
+
<url>http://addictedtonew.com</url>
|
48
|
+
<protected>false</protected>
|
49
|
+
<followers_count>486</followers_count>
|
50
|
+
</user>
|
51
|
+
</status>
|
52
|
+
</statuses></code></pre>
|
53
|
+
|
54
|
+
<h3>You could have the following objects:</h3>
|
55
|
+
|
56
|
+
<pre><code>class User
|
57
|
+
include HappyMapper
|
58
|
+
|
59
|
+
element :id, Integer
|
60
|
+
element :name, String
|
61
|
+
element :screen_name, String
|
62
|
+
element :location, String
|
63
|
+
element :description, String
|
64
|
+
element :profile_image_url, String
|
65
|
+
element :url, String
|
66
|
+
element :protected, Boolean
|
67
|
+
element :followers_count, Integer
|
68
|
+
end
|
69
|
+
|
70
|
+
class Status
|
71
|
+
include HappyMapper
|
72
|
+
|
73
|
+
element :id, Integer
|
74
|
+
element :text, String
|
75
|
+
element :created_at, Time
|
76
|
+
element :source, String
|
77
|
+
element :truncated, Boolean
|
78
|
+
element :in_reply_to_status_id, Integer
|
79
|
+
element :in_reply_to_user_id, Integer
|
80
|
+
element :favorited, Boolean
|
81
|
+
has_one :user, User
|
82
|
+
end
|
83
|
+
|
84
|
+
statuses = Status.parse(file_contents)
|
85
|
+
statuses.each do |status|
|
86
|
+
puts status.user.name, status.user.screen_name, status.text, status.source, ''
|
87
|
+
end</code></pre>
|
88
|
+
|
89
|
+
<h2>Support</h2>
|
90
|
+
<p>Conversations welcome in the <a href="http://groups.google.com/group/happymapper">google group</a> and bugs/features over at <a href="http://github.com/jnunemaker/happymapper/issues/">Github</a>.</p>
|
91
|
+
</div>
|
92
|
+
|
93
|
+
<div id="footer">
|
94
|
+
<p>Created by <a href="http://addictedtonew.com/about/">John Nunemaker</a></p>
|
95
|
+
</div>
|
96
|
+
</div>
|
97
|
+
</body>
|
98
|
+
</html>
|
metadata
ADDED
@@ -0,0 +1,120 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: nokogiri-happymapper
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Damien Le Berrigaud, John Nunemaker, David Bolton, Roland Swingler
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2010-03-19 00:00:00 +11:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: nokogiri
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 1.4.0
|
24
|
+
version:
|
25
|
+
description: object to xml mapping library, using nokogiri (fork from John Nunemaker's Happymapper)
|
26
|
+
email: damien@meliondesign.com
|
27
|
+
executables: []
|
28
|
+
|
29
|
+
extensions: []
|
30
|
+
|
31
|
+
extra_rdoc_files:
|
32
|
+
- README
|
33
|
+
- TODO
|
34
|
+
- lib/happymapper.rb
|
35
|
+
- lib/happymapper/attribute.rb
|
36
|
+
- lib/happymapper/element.rb
|
37
|
+
- lib/happymapper/item.rb
|
38
|
+
- lib/happymapper/text_node.rb
|
39
|
+
- lib/happymapper/version.rb
|
40
|
+
files:
|
41
|
+
- History
|
42
|
+
- License
|
43
|
+
- Manifest
|
44
|
+
- README
|
45
|
+
- Rakefile
|
46
|
+
- TODO
|
47
|
+
- examples/amazon.rb
|
48
|
+
- examples/current_weather.rb
|
49
|
+
- examples/dashed_elements.rb
|
50
|
+
- examples/family_tree.rb
|
51
|
+
- examples/post.rb
|
52
|
+
- examples/twitter.rb
|
53
|
+
- lib/happymapper.rb
|
54
|
+
- lib/happymapper/attribute.rb
|
55
|
+
- lib/happymapper/element.rb
|
56
|
+
- lib/happymapper/item.rb
|
57
|
+
- lib/happymapper/text_node.rb
|
58
|
+
- lib/happymapper/version.rb
|
59
|
+
- nokogiri-happymapper.gemspec
|
60
|
+
- spec/fixtures/address.xml
|
61
|
+
- spec/fixtures/analytics.xml
|
62
|
+
- spec/fixtures/commit.xml
|
63
|
+
- spec/fixtures/current_weather.xml
|
64
|
+
- spec/fixtures/dictionary.xml
|
65
|
+
- spec/fixtures/family_tree.xml
|
66
|
+
- spec/fixtures/lastfm.xml
|
67
|
+
- spec/fixtures/multiple_namespaces.xml
|
68
|
+
- spec/fixtures/multiple_primitives.xml
|
69
|
+
- spec/fixtures/pita.xml
|
70
|
+
- spec/fixtures/posts.xml
|
71
|
+
- spec/fixtures/product_default_namespace.xml
|
72
|
+
- spec/fixtures/product_no_namespace.xml
|
73
|
+
- spec/fixtures/product_single_namespace.xml
|
74
|
+
- spec/fixtures/quarters.xml
|
75
|
+
- spec/fixtures/radar.xml
|
76
|
+
- spec/fixtures/statuses.xml
|
77
|
+
- spec/happymapper_attribute_spec.rb
|
78
|
+
- spec/happymapper_element_spec.rb
|
79
|
+
- spec/happymapper_item_spec.rb
|
80
|
+
- spec/happymapper_spec.rb
|
81
|
+
- spec/happymapper_text_node_spec.rb
|
82
|
+
- spec/spec.opts
|
83
|
+
- spec/spec_helper.rb
|
84
|
+
- website/css/common.css
|
85
|
+
- website/index.html
|
86
|
+
has_rdoc: true
|
87
|
+
homepage: http://github.com/dam5s/happymapper
|
88
|
+
licenses: []
|
89
|
+
|
90
|
+
post_install_message: May you have many happy mappings!
|
91
|
+
rdoc_options:
|
92
|
+
- --line-numbers
|
93
|
+
- --inline-source
|
94
|
+
- --title
|
95
|
+
- Nokogiri-happymapper
|
96
|
+
- --main
|
97
|
+
- README
|
98
|
+
require_paths:
|
99
|
+
- lib
|
100
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: "0"
|
105
|
+
version:
|
106
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: "1.2"
|
111
|
+
version:
|
112
|
+
requirements: []
|
113
|
+
|
114
|
+
rubyforge_project: nokogiri-happymapper
|
115
|
+
rubygems_version: 1.3.5
|
116
|
+
signing_key:
|
117
|
+
specification_version: 3
|
118
|
+
summary: object to xml mapping library, using nokogiri (fork from John Nunemaker's Happymapper)
|
119
|
+
test_files: []
|
120
|
+
|