doxo-roxml 2.5.3
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +279 -0
- data/MIT-LICENSE +18 -0
- data/Manifest.txt +103 -0
- data/README.rdoc +158 -0
- data/Rakefile +96 -0
- data/TODO +62 -0
- data/config/website.yml +2 -0
- data/examples/active_record.rb +70 -0
- data/examples/amazon.rb +33 -0
- data/examples/current_weather.rb +27 -0
- data/examples/dashed_elements.rb +20 -0
- data/examples/library.rb +40 -0
- data/examples/posts.rb +27 -0
- data/examples/twitter.rb +37 -0
- data/examples/xml/active_record.xml +70 -0
- data/examples/xml/amazon.xml +133 -0
- data/examples/xml/current_weather.xml +89 -0
- data/examples/xml/dashed_elements.xml +52 -0
- data/examples/xml/posts.xml +23 -0
- data/examples/xml/twitter.xml +422 -0
- data/lib/roxml.rb +511 -0
- data/lib/roxml/definition.rb +234 -0
- data/lib/roxml/extensions.rb +6 -0
- data/lib/roxml/extensions/array.rb +13 -0
- data/lib/roxml/extensions/array/conversions.rb +12 -0
- data/lib/roxml/extensions/deprecation.rb +33 -0
- data/lib/roxml/extensions/string.rb +6 -0
- data/lib/roxml/extensions/string/conversions.rb +5 -0
- data/lib/roxml/extensions/string/iterators.rb +12 -0
- data/lib/roxml/hash_definition.rb +25 -0
- data/lib/roxml/xml.rb +40 -0
- data/lib/roxml/xml/parsers/libxml.rb +86 -0
- data/lib/roxml/xml/parsers/rexml.rb +84 -0
- data/lib/roxml/xml/references.rb +299 -0
- data/roxml.gemspec +50 -0
- data/spec/definition_spec.rb +490 -0
- data/spec/examples/active_record_spec.rb +40 -0
- data/spec/examples/amazon_spec.rb +53 -0
- data/spec/examples/current_weather_spec.rb +37 -0
- data/spec/examples/dashed_elements_spec.rb +20 -0
- data/spec/examples/library_spec.rb +46 -0
- data/spec/examples/post_spec.rb +24 -0
- data/spec/examples/twitter_spec.rb +32 -0
- data/spec/roxml_spec.rb +372 -0
- data/spec/shared_specs.rb +15 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +33 -0
- data/spec/xml/parser_spec.rb +47 -0
- data/tasks/rspec.rake +21 -0
- data/tasks/test.rake +42 -0
- data/test/bugs/rexml_bugs.rb +15 -0
- data/test/fixtures/book_malformed.xml +5 -0
- data/test/fixtures/book_pair.xml +8 -0
- data/test/fixtures/book_text_with_attribute.xml +5 -0
- data/test/fixtures/book_valid.xml +5 -0
- data/test/fixtures/book_with_authors.xml +7 -0
- data/test/fixtures/book_with_contributions.xml +9 -0
- data/test/fixtures/book_with_contributors.xml +7 -0
- data/test/fixtures/book_with_contributors_attrs.xml +7 -0
- data/test/fixtures/book_with_default_namespace.xml +9 -0
- data/test/fixtures/book_with_depth.xml +6 -0
- data/test/fixtures/book_with_octal_pages.xml +4 -0
- data/test/fixtures/book_with_publisher.xml +7 -0
- data/test/fixtures/book_with_wrapped_attr.xml +3 -0
- data/test/fixtures/dictionary_of_attr_name_clashes.xml +8 -0
- data/test/fixtures/dictionary_of_attrs.xml +6 -0
- data/test/fixtures/dictionary_of_guarded_names.xml +6 -0
- data/test/fixtures/dictionary_of_mixeds.xml +4 -0
- data/test/fixtures/dictionary_of_name_clashes.xml +10 -0
- data/test/fixtures/dictionary_of_names.xml +4 -0
- data/test/fixtures/dictionary_of_texts.xml +10 -0
- data/test/fixtures/library.xml +30 -0
- data/test/fixtures/library_uppercase.xml +30 -0
- data/test/fixtures/muffins.xml +3 -0
- data/test/fixtures/nameless_ageless_youth.xml +2 -0
- data/test/fixtures/node_with_attr_name_conflicts.xml +1 -0
- data/test/fixtures/node_with_name_conflicts.xml +4 -0
- data/test/fixtures/numerology.xml +4 -0
- data/test/fixtures/person.xml +1 -0
- data/test/fixtures/person_with_guarded_mothers.xml +13 -0
- data/test/fixtures/person_with_mothers.xml +10 -0
- data/test/mocks/dictionaries.rb +57 -0
- data/test/mocks/mocks.rb +279 -0
- data/test/test_helper.rb +45 -0
- data/test/unit/definition_test.rb +235 -0
- data/test/unit/deprecations_test.rb +24 -0
- data/test/unit/to_xml_test.rb +81 -0
- data/test/unit/xml_attribute_test.rb +39 -0
- data/test/unit/xml_block_test.rb +81 -0
- data/test/unit/xml_bool_test.rb +122 -0
- data/test/unit/xml_convention_test.rb +150 -0
- data/test/unit/xml_hash_test.rb +115 -0
- data/test/unit/xml_initialize_test.rb +49 -0
- data/test/unit/xml_name_test.rb +141 -0
- data/test/unit/xml_namespace_test.rb +76 -0
- data/test/unit/xml_object_test.rb +207 -0
- data/test/unit/xml_required_test.rb +93 -0
- data/test/unit/xml_text_test.rb +71 -0
- data/vendor/override_rake_task/README +30 -0
- data/vendor/override_rake_task/init.rb +1 -0
- data/vendor/override_rake_task/install.rb +46 -0
- data/vendor/override_rake_task/lib/override_rake_task.rb +16 -0
- data/website/index.html +98 -0
- metadata +234 -0
@@ -0,0 +1,93 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', 'test_helper')
|
2
|
+
|
3
|
+
class TestXMLRequired < ActiveSupport::TestCase
|
4
|
+
def setup
|
5
|
+
@full_book = <<BOOK
|
6
|
+
<book ISBN="1234">
|
7
|
+
<title>This & that</title>
|
8
|
+
<contributor_array>
|
9
|
+
<contributor role="Author">
|
10
|
+
<name>Johnny</name>
|
11
|
+
</contributor>
|
12
|
+
</contributor_array>
|
13
|
+
<contributor_hash>
|
14
|
+
<contributor role="Author" name="Johnny" />
|
15
|
+
</contributor_hash>
|
16
|
+
</book>
|
17
|
+
BOOK
|
18
|
+
|
19
|
+
@book_missing_attr = <<BOOK
|
20
|
+
<book>
|
21
|
+
<title>This & that</title>
|
22
|
+
<contributor_array>
|
23
|
+
<contributor role="Author">
|
24
|
+
<name>Johnny</name>
|
25
|
+
</contributor>
|
26
|
+
</contributor_array>
|
27
|
+
<contributor_hash>
|
28
|
+
<contributor role="Author" name="Johnny" />
|
29
|
+
</contributor_hash>
|
30
|
+
</book>
|
31
|
+
BOOK
|
32
|
+
|
33
|
+
@book_missing_text = <<BOOK
|
34
|
+
<book ISBN="1234">
|
35
|
+
<contributor_array>
|
36
|
+
<contributor role="Author">
|
37
|
+
<name>Johnny</name>
|
38
|
+
</contributor>
|
39
|
+
</contributor_array>
|
40
|
+
<contributor_hash>
|
41
|
+
<contributor role="Author" name="Johnny" />
|
42
|
+
</contributor_hash>
|
43
|
+
</book>
|
44
|
+
BOOK
|
45
|
+
|
46
|
+
@book_missing_array = <<BOOK
|
47
|
+
<book ISBN="1234">
|
48
|
+
<title>This & that</title>
|
49
|
+
<contributor_hash>
|
50
|
+
<contributor role="Author" name="Johnny" />
|
51
|
+
</contributor_hash>
|
52
|
+
</book>
|
53
|
+
BOOK
|
54
|
+
|
55
|
+
@book_missing_hash = <<BOOK
|
56
|
+
<book ISBN="1234">
|
57
|
+
<title>This & that</title>
|
58
|
+
<contributor_array>
|
59
|
+
<contributor role="Author">
|
60
|
+
<name>Johnny</name>
|
61
|
+
</contributor>
|
62
|
+
</contributor_array>
|
63
|
+
</book>
|
64
|
+
BOOK
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_required_passes_on_prescence
|
68
|
+
BookWithRequired.from_xml(@full_book)
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_required_throws_on_attr_absence
|
72
|
+
assert_raise ROXML::RequiredElementMissing do
|
73
|
+
BookWithRequired.from_xml(@book_missing_attr)
|
74
|
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_required_throws_on_text_absence
|
78
|
+
assert_raise ROXML::RequiredElementMissing do
|
79
|
+
BookWithRequired.from_xml(@book_missing_text)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_required_throws_on_array_absence
|
84
|
+
assert_raise ROXML::RequiredElementMissing do
|
85
|
+
BookWithRequired.from_xml(@book_missing_array)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_required_throws_on_hash_absence
|
90
|
+
assert_raise ROXML::RequiredElementMissing do
|
91
|
+
BookWithRequired.from_xml(@book_missing_hash)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', 'test_helper')
|
2
|
+
|
3
|
+
class TestXMLText < ActiveSupport::TestCase
|
4
|
+
# Test a simple mapping with no composition
|
5
|
+
def test_valid_simple
|
6
|
+
book = Book.from_xml(fixture(:book_valid))
|
7
|
+
assert_equal("The PickAxe", book.title)
|
8
|
+
assert_equal("David Thomas, Andrew Hunt & Dave Thomas", book.author)
|
9
|
+
|
10
|
+
assert_equal xml_fixture(:book_valid).to_s.gsub("\n", ''), book.to_xml.to_s.gsub("\n", '')
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_without_needed_from
|
14
|
+
assert !Library.from_xml(fixture(:library_uppercase)).name
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_with_needed_from
|
18
|
+
assert_equal "Ruby library", Library.from_xml(fixture(:library)).name
|
19
|
+
assert_equal "Ruby library", UppercaseLibrary.from_xml(fixture(:library_uppercase)).name
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_as_array
|
23
|
+
assert_equal ["David Thomas","Andrew Hunt","Dave Thomas"].sort,
|
24
|
+
BookWithAuthors.from_xml(fixture(:book_with_authors)).authors.sort
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_empty_array_result_returned_properly
|
28
|
+
empty_array = Class.new do
|
29
|
+
include ROXML
|
30
|
+
|
31
|
+
xml_reader :missing_array, :as => [], :from => 'missing'
|
32
|
+
end
|
33
|
+
|
34
|
+
obj = empty_array.from_xml('<empty_array></empty_array>')
|
35
|
+
assert_equal [], obj.missing_array
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_text_modification
|
39
|
+
person = Person.from_xml(fixture(:person))
|
40
|
+
assert_equal("Ben Franklin", person.name)
|
41
|
+
person.name = "Fred"
|
42
|
+
xml=person.to_xml.to_s
|
43
|
+
assert(/Fred/=~xml)
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_default_initialization
|
47
|
+
person = PersonWithMotherOrMissing.from_xml(fixture(:nameless_ageless_youth))
|
48
|
+
assert_equal "Anonymous", person.name
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_default_initialization_of_content
|
52
|
+
person = Person.from_xml(fixture(:nameless_ageless_youth))
|
53
|
+
assert_equal "Unknown", person.name
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_recursive_with_default_initialization
|
57
|
+
p = PersonWithMotherOrMissing.from_xml(fixture(:person_with_mothers))
|
58
|
+
assert_equal 'Unknown', p.mother.mother.mother.name
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_get_with_block
|
62
|
+
p = Book.from_xml(fixture(:book_valid))
|
63
|
+
assert_equal 357, p.pages
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_no_name_clashes
|
67
|
+
n = NodeWithNameConflicts.from_xml(fixture(:node_with_name_conflicts))
|
68
|
+
assert_equal "Just junk... really", n.content
|
69
|
+
assert_equal "Cartwheel", n.name
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
OverrideRakeTask plugin by Eugene Bolshakov, eugene.bolshakov@gmail.com, http://www.taknado.com
|
2
|
+
|
3
|
+
This plugin is based on the Matthew Bass's idea described here:
|
4
|
+
http://matthewbass.com/2007/03/07/overriding-existing-rake-tasks/
|
5
|
+
|
6
|
+
The installation script is based on the one found in the app_config plugin
|
7
|
+
by Daniel Owsianski, http://jarmark.org/projects/app-config/
|
8
|
+
|
9
|
+
When using rake with rails it loads the task in the following order:
|
10
|
+
|
11
|
+
1. Default rails tasks (like db:migrate)
|
12
|
+
2. The tasks in your app's lib/tasks directory
|
13
|
+
3. The tasks in your vendor/plugins directory
|
14
|
+
|
15
|
+
This plugin will allow to override rake tasks that were defined earlier. It means that
|
16
|
+
you'll be able to override default rails tasks with lib/tasks & plugins tasks and
|
17
|
+
override the taksks in lib/tasks with the tasks defined in plugins.
|
18
|
+
|
19
|
+
In order to override a task you need to define it as usual, but using "override_task"
|
20
|
+
method instead of "task":
|
21
|
+
|
22
|
+
namespace :db do
|
23
|
+
override_task :migrate do
|
24
|
+
...
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
In order to make this work the plugin should be loaded before the tasks and the install script
|
29
|
+
supplied with the plugin adds a line to load itself to the Rakefile. If it won't be able to
|
30
|
+
modify your Rakefile, it will let you know and you'll have to modify it manually.
|
@@ -0,0 +1 @@
|
|
1
|
+
# Include hook code here
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# Insert line: [require "#{RAILS_ROOT}/vendor/plugins/override_rake_task/lib/override_rake_task.rb"]
|
2
|
+
# before "require 'rake'" in Rakefile
|
3
|
+
# stolen from app_confing plugin :) http://jarmark.org/projects/app-config/
|
4
|
+
|
5
|
+
file = File.join(File.dirname(__FILE__), '../../../Rakefile')
|
6
|
+
unless File.exists?(file)
|
7
|
+
STDERR.puts("ERROR: Could not locate Rakefile")
|
8
|
+
exit(1)
|
9
|
+
end
|
10
|
+
|
11
|
+
# Tip from http://pleac.sourceforge.net/pleac_ruby/fileaccess.html
|
12
|
+
# 'Modifying a File in Place Without a Temporary File'
|
13
|
+
output= ""
|
14
|
+
inserted = false
|
15
|
+
line_to_insert = %q{require "#{RAILS_ROOT}/vendor/plugins/override_rake_task/lib/override_rake_task.rb"}
|
16
|
+
line_to_find = "require 'rake'"
|
17
|
+
|
18
|
+
File.open(file, 'r+') do |f| # open file for update
|
19
|
+
# read into array of lines and iterate through lines
|
20
|
+
f.readlines.each do |line|
|
21
|
+
unless inserted
|
22
|
+
if line.gsub(/#.*/, '').include?(line_to_insert)
|
23
|
+
inserted = true
|
24
|
+
elsif line.gsub(/#.*/, '').include?(line_to_find)
|
25
|
+
output << line_to_insert
|
26
|
+
output << "\n\n"
|
27
|
+
inserted = true
|
28
|
+
end
|
29
|
+
end
|
30
|
+
output << line
|
31
|
+
end
|
32
|
+
f.pos = 0 # back to start
|
33
|
+
f.print output # write out modified lines
|
34
|
+
f.truncate(f.pos) # truncate to new length
|
35
|
+
end
|
36
|
+
|
37
|
+
unless inserted
|
38
|
+
STDERR.puts <<END
|
39
|
+
ERROR: Could not update Rakefile
|
40
|
+
To finish installation please add the following line to
|
41
|
+
Rakefile manually:
|
42
|
+
\t#{line_to_insert}
|
43
|
+
NOTE: line must be inserted before #{line_to_find}
|
44
|
+
END
|
45
|
+
exit(1)
|
46
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# OverrideRakeTask
|
2
|
+
Rake::TaskManager.class_eval do
|
3
|
+
def remove_task(task_name)
|
4
|
+
@tasks.delete(task_name.to_s)
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
def remove_task(task_name)
|
9
|
+
Rake.application.remove_task(task_name)
|
10
|
+
end
|
11
|
+
|
12
|
+
def override_task(*args, &block)
|
13
|
+
name, params, deps = Rake.application.resolve_args(args)
|
14
|
+
remove_task Rake.application[name].name
|
15
|
+
Rake::Task.define_task({name => deps}, &block)
|
16
|
+
end
|
data/website/index.html
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
3
|
+
|
4
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
5
|
+
<head>
|
6
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
7
|
+
|
8
|
+
<title>Empact/roxml @ GitHub</title>
|
9
|
+
|
10
|
+
<style type="text/css">
|
11
|
+
body {
|
12
|
+
margin-top: 1.0em;
|
13
|
+
background-color: #baafdb;
|
14
|
+
font-family: "helvetica";
|
15
|
+
color: #000000;
|
16
|
+
}
|
17
|
+
#container {
|
18
|
+
margin: 0 auto;
|
19
|
+
width: 700px;
|
20
|
+
}
|
21
|
+
h1 { font-size: 3.8em; color: #455024; margin-bottom: 3px; }
|
22
|
+
h1 .small { font-size: 0.4em; }
|
23
|
+
h1 a { text-decoration: none }
|
24
|
+
h2 { font-size: 1.5em; color: #455024; }
|
25
|
+
h3 { text-align: center; color: #455024; }
|
26
|
+
a { color: #455024; }
|
27
|
+
.description { font-size: 1.2em; margin-bottom: 30px; margin-top: 30px; font-style: italic;}
|
28
|
+
.download { float: right; }
|
29
|
+
pre { background: #000; color: #fff; padding: 15px;}
|
30
|
+
hr { border: 0; width: 80%; border-bottom: 1px solid #aaa}
|
31
|
+
.footer { text-align:center; padding-top:30px; font-style: italic; }
|
32
|
+
</style>
|
33
|
+
|
34
|
+
</head>
|
35
|
+
|
36
|
+
<body>
|
37
|
+
<a href="http://github.com/Empact/roxml"><img style="position: absolute; top: 0; right: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub" /></a>
|
38
|
+
|
39
|
+
<div id="container">
|
40
|
+
|
41
|
+
<div class="download">
|
42
|
+
<a href="http://github.com/Empact/roxml/zipball/master">
|
43
|
+
<img border="0" width="90" src="http://github.com/images/modules/download/zip.png"></a>
|
44
|
+
<a href="http://github.com/Empact/roxml/tarball/master">
|
45
|
+
<img border="0" width="90" src="http://github.com/images/modules/download/tar.png"></a>
|
46
|
+
</div>
|
47
|
+
|
48
|
+
<h1><a href="http://github.com/Empact/roxml">roxml</a>
|
49
|
+
<span class="small">by <a href="http://github.com/Empact">Empact</a></small></h1>
|
50
|
+
|
51
|
+
<div class="description">
|
52
|
+
ROXML is a module for binding Ruby classes to XML. It supports custom mapping and bidirectional marshaling between Ruby and XML using annotation-style class methods. ROXML supports the LibXML and REXML XML processors.
|
53
|
+
</div>
|
54
|
+
|
55
|
+
<p>We may not want to work with XML, but we don't always get to pick just how our data comes. If you do need to do serious work with XML, ROXML is here to make it nice.
|
56
|
+
|
57
|
+
Use xpath-based xml declarations to map an XML response into an extensible object, use that object, and then ouput it back to xml as it came.
|
58
|
+
|
59
|
+
Aside from the basics, ROXML has a lot of little goodies to make these definitions minimal and readable, which are worth digging in for. See the 'xml_convention' method for easily referencing xml which uses other naming conventions. See the handling of '?' in accessor names, the application of blocks and such for other manipulations.
|
60
|
+
|
61
|
+
And finally, if you use this library, feel free to push code back my way. I'll be looking forward to it.</p><h2>Dependencies</h2>
|
62
|
+
<p>activesupport >= 2.1.0</p>
|
63
|
+
<h2>Install</h2>
|
64
|
+
<p>'gem install roxml' will install the latest stable <a href="http://rubyforge.org/frs/?group_id=305">rubyforge version</a></p>
|
65
|
+
<h2>License</h2>
|
66
|
+
<p>MIT License</p>
|
67
|
+
<h2>Authors</h2>
|
68
|
+
<p>Ben Woosley (ben.woosley@gmail.com)
|
69
|
+
<br/>Anders Engström (anders.engstrom@gnejs.net)
|
70
|
+
<br/>James Thompson (james@plainprograms.com)
|
71
|
+
<br/>James Healy (jimmy@deefa.com)
|
72
|
+
<br/>Zak Mandhro (mandhro@yahoo.com)
|
73
|
+
<br/>Russ Olsen (russell.olsen@gmail.com)</p>
|
74
|
+
<h2>Contact</h2>
|
75
|
+
<p>Ben Woosley (Ben.Woosley@gmail.com)
|
76
|
+
<br/> </p>
|
77
|
+
|
78
|
+
|
79
|
+
<h2>Download</h2>
|
80
|
+
<p>
|
81
|
+
You can download this project in either
|
82
|
+
<a href="http://github.com/Empact/roxml/zipball/master">zip</a> or
|
83
|
+
<a href="http://github.com/Empact/roxml/tarball/master">tar</a> formats.
|
84
|
+
</p>
|
85
|
+
<p>You can also clone the project with <a href="http://git-scm.com">Git</a>
|
86
|
+
by running:
|
87
|
+
<pre>$ git clone git://github.com/Empact/roxml</pre>
|
88
|
+
</p>
|
89
|
+
|
90
|
+
<div class="footer">
|
91
|
+
get the source code on GitHub : <a href="http://github.com/Empact/roxml">Empact/roxml</a>
|
92
|
+
</div>
|
93
|
+
|
94
|
+
</div>
|
95
|
+
|
96
|
+
|
97
|
+
</body>
|
98
|
+
</html>
|
metadata
ADDED
@@ -0,0 +1,234 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: doxo-roxml
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.5.3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ben Woosley
|
8
|
+
- Zak Mandhro
|
9
|
+
- Anders Engstrom
|
10
|
+
- Russ Olsen
|
11
|
+
autorequire:
|
12
|
+
bindir: bin
|
13
|
+
cert_chain: []
|
14
|
+
|
15
|
+
date: 2009-03-22 00:00:00 -07:00
|
16
|
+
default_executable:
|
17
|
+
dependencies:
|
18
|
+
- !ruby/object:Gem::Dependency
|
19
|
+
name: activesupport
|
20
|
+
type: :runtime
|
21
|
+
version_requirement:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 2.1.0
|
27
|
+
version:
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: libxml-ruby
|
30
|
+
type: :runtime
|
31
|
+
version_requirement:
|
32
|
+
version_requirements: !ruby/object:Gem::Requirement
|
33
|
+
requirements:
|
34
|
+
- - ">="
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: 1.0.0
|
37
|
+
version:
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
name: newgem
|
40
|
+
type: :development
|
41
|
+
version_requirement:
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 1.3.0
|
47
|
+
version:
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: sqlite3-ruby
|
50
|
+
type: :development
|
51
|
+
version_requirement:
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: 1.2.4
|
57
|
+
version:
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: activerecord
|
60
|
+
type: :development
|
61
|
+
version_requirement:
|
62
|
+
version_requirements: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: 2.2.2
|
67
|
+
version:
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
name: hoe
|
70
|
+
type: :development
|
71
|
+
version_requirement:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 1.8.0
|
77
|
+
version:
|
78
|
+
description: ROXML is a Ruby library designed to make it easier for Ruby developers to work with XML. Using simple annotations, it enables Ruby classes to be mapped to XML. ROXML takes care of the marshalling and unmarshalling of mapped attributes so that developers can focus on building first-class Ruby classes. As a result, ROXML simplifies the development of RESTful applications, Web Services, and XML-RPC.
|
79
|
+
email: ben.woosley@gmail.com
|
80
|
+
executables: []
|
81
|
+
|
82
|
+
extensions: []
|
83
|
+
|
84
|
+
extra_rdoc_files:
|
85
|
+
- History.txt
|
86
|
+
- Manifest.txt
|
87
|
+
- README.rdoc
|
88
|
+
files:
|
89
|
+
- History.txt
|
90
|
+
- MIT-LICENSE
|
91
|
+
- Manifest.txt
|
92
|
+
- README.rdoc
|
93
|
+
- Rakefile
|
94
|
+
- TODO
|
95
|
+
- config/website.yml
|
96
|
+
- examples/active_record.rb
|
97
|
+
- examples/amazon.rb
|
98
|
+
- examples/current_weather.rb
|
99
|
+
- examples/dashed_elements.rb
|
100
|
+
- examples/library.rb
|
101
|
+
- examples/posts.rb
|
102
|
+
- examples/twitter.rb
|
103
|
+
- examples/xml/active_record.xml
|
104
|
+
- examples/xml/amazon.xml
|
105
|
+
- examples/xml/current_weather.xml
|
106
|
+
- examples/xml/dashed_elements.xml
|
107
|
+
- examples/xml/posts.xml
|
108
|
+
- examples/xml/twitter.xml
|
109
|
+
- lib/roxml.rb
|
110
|
+
- lib/roxml/definition.rb
|
111
|
+
- lib/roxml/extensions.rb
|
112
|
+
- lib/roxml/extensions/array.rb
|
113
|
+
- lib/roxml/extensions/array/conversions.rb
|
114
|
+
- lib/roxml/extensions/deprecation.rb
|
115
|
+
- lib/roxml/extensions/string.rb
|
116
|
+
- lib/roxml/extensions/string/conversions.rb
|
117
|
+
- lib/roxml/extensions/string/iterators.rb
|
118
|
+
- lib/roxml/hash_definition.rb
|
119
|
+
- lib/roxml/xml.rb
|
120
|
+
- lib/roxml/xml/parsers/libxml.rb
|
121
|
+
- lib/roxml/xml/parsers/rexml.rb
|
122
|
+
- lib/roxml/xml/references.rb
|
123
|
+
- roxml.gemspec
|
124
|
+
- spec/definition_spec.rb
|
125
|
+
- spec/examples/active_record_spec.rb
|
126
|
+
- spec/examples/amazon_spec.rb
|
127
|
+
- spec/examples/current_weather_spec.rb
|
128
|
+
- spec/examples/dashed_elements_spec.rb
|
129
|
+
- spec/examples/library_spec.rb
|
130
|
+
- spec/examples/post_spec.rb
|
131
|
+
- spec/examples/twitter_spec.rb
|
132
|
+
- spec/roxml_spec.rb
|
133
|
+
- spec/shared_specs.rb
|
134
|
+
- spec/spec.opts
|
135
|
+
- spec/spec_helper.rb
|
136
|
+
- spec/xml/parser_spec.rb
|
137
|
+
- tasks/rspec.rake
|
138
|
+
- tasks/test.rake
|
139
|
+
- test/bugs/rexml_bugs.rb
|
140
|
+
- test/fixtures/book_malformed.xml
|
141
|
+
- test/fixtures/book_pair.xml
|
142
|
+
- test/fixtures/book_text_with_attribute.xml
|
143
|
+
- test/fixtures/book_valid.xml
|
144
|
+
- test/fixtures/book_with_authors.xml
|
145
|
+
- test/fixtures/book_with_contributions.xml
|
146
|
+
- test/fixtures/book_with_contributors.xml
|
147
|
+
- test/fixtures/book_with_contributors_attrs.xml
|
148
|
+
- test/fixtures/book_with_default_namespace.xml
|
149
|
+
- test/fixtures/book_with_depth.xml
|
150
|
+
- test/fixtures/book_with_octal_pages.xml
|
151
|
+
- test/fixtures/book_with_publisher.xml
|
152
|
+
- test/fixtures/book_with_wrapped_attr.xml
|
153
|
+
- test/fixtures/dictionary_of_attr_name_clashes.xml
|
154
|
+
- test/fixtures/dictionary_of_attrs.xml
|
155
|
+
- test/fixtures/dictionary_of_guarded_names.xml
|
156
|
+
- test/fixtures/dictionary_of_mixeds.xml
|
157
|
+
- test/fixtures/dictionary_of_name_clashes.xml
|
158
|
+
- test/fixtures/dictionary_of_names.xml
|
159
|
+
- test/fixtures/dictionary_of_texts.xml
|
160
|
+
- test/fixtures/library.xml
|
161
|
+
- test/fixtures/library_uppercase.xml
|
162
|
+
- test/fixtures/muffins.xml
|
163
|
+
- test/fixtures/nameless_ageless_youth.xml
|
164
|
+
- test/fixtures/node_with_attr_name_conflicts.xml
|
165
|
+
- test/fixtures/node_with_name_conflicts.xml
|
166
|
+
- test/fixtures/numerology.xml
|
167
|
+
- test/fixtures/person.xml
|
168
|
+
- test/fixtures/person_with_guarded_mothers.xml
|
169
|
+
- test/fixtures/person_with_mothers.xml
|
170
|
+
- test/mocks/dictionaries.rb
|
171
|
+
- test/mocks/mocks.rb
|
172
|
+
- test/test_helper.rb
|
173
|
+
- test/unit/definition_test.rb
|
174
|
+
- test/unit/deprecations_test.rb
|
175
|
+
- test/unit/to_xml_test.rb
|
176
|
+
- test/unit/xml_attribute_test.rb
|
177
|
+
- test/unit/xml_block_test.rb
|
178
|
+
- test/unit/xml_bool_test.rb
|
179
|
+
- test/unit/xml_convention_test.rb
|
180
|
+
- test/unit/xml_hash_test.rb
|
181
|
+
- test/unit/xml_initialize_test.rb
|
182
|
+
- test/unit/xml_name_test.rb
|
183
|
+
- test/unit/xml_namespace_test.rb
|
184
|
+
- test/unit/xml_object_test.rb
|
185
|
+
- test/unit/xml_required_test.rb
|
186
|
+
- test/unit/xml_text_test.rb
|
187
|
+
- vendor/override_rake_task/README
|
188
|
+
- vendor/override_rake_task/init.rb
|
189
|
+
- vendor/override_rake_task/install.rb
|
190
|
+
- vendor/override_rake_task/lib/override_rake_task.rb
|
191
|
+
- website/index.html
|
192
|
+
has_rdoc: true
|
193
|
+
homepage: http://roxml.rubyforge.org
|
194
|
+
licenses:
|
195
|
+
post_install_message:
|
196
|
+
rdoc_options:
|
197
|
+
- --main
|
198
|
+
- README.rdoc
|
199
|
+
require_paths:
|
200
|
+
- lib
|
201
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
202
|
+
requirements:
|
203
|
+
- - ">="
|
204
|
+
- !ruby/object:Gem::Version
|
205
|
+
version: "0"
|
206
|
+
version:
|
207
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
208
|
+
requirements:
|
209
|
+
- - ">="
|
210
|
+
- !ruby/object:Gem::Version
|
211
|
+
version: "0"
|
212
|
+
version:
|
213
|
+
requirements: []
|
214
|
+
|
215
|
+
rubyforge_project: roxml
|
216
|
+
rubygems_version: 1.3.5
|
217
|
+
signing_key:
|
218
|
+
specification_version: 2
|
219
|
+
summary: Ruby Object to XML mapping library
|
220
|
+
test_files:
|
221
|
+
- test/unit/definition_test.rb
|
222
|
+
- test/unit/deprecations_test.rb
|
223
|
+
- test/unit/to_xml_test.rb
|
224
|
+
- test/unit/xml_attribute_test.rb
|
225
|
+
- test/unit/xml_block_test.rb
|
226
|
+
- test/unit/xml_bool_test.rb
|
227
|
+
- test/unit/xml_convention_test.rb
|
228
|
+
- test/unit/xml_hash_test.rb
|
229
|
+
- test/unit/xml_initialize_test.rb
|
230
|
+
- test/unit/xml_name_test.rb
|
231
|
+
- test/unit/xml_namespace_test.rb
|
232
|
+
- test/unit/xml_object_test.rb
|
233
|
+
- test/unit/xml_required_test.rb
|
234
|
+
- test/unit/xml_text_test.rb
|