roxml 2.3.2 → 2.4.0
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.txt +145 -0
- data/Manifest.txt +81 -0
- data/Rakefile +85 -95
- data/TODO +42 -0
- data/html/index.html +278 -0
- data/html/style.css +79 -0
- data/lib/roxml.rb +112 -49
- data/lib/roxml/extensions/active_support.rb +37 -12
- data/lib/roxml/extensions/array/conversions.rb +12 -2
- data/lib/roxml/extensions/deprecation.rb +4 -4
- data/lib/roxml/options.rb +39 -30
- data/lib/roxml/xml.rb +119 -54
- data/lib/roxml/xml/rexml.rb +2 -2
- data/roxml.gemspec +40 -101
- data/tasks/test.rake +42 -0
- data/test/bugs/rexml_bugs.rb +15 -0
- data/test/fixtures/book_with_octal_pages.xml +4 -0
- data/test/mocks/mocks.rb +0 -4
- data/test/test_helper.rb +1 -1
- data/test/unit/array_test.rb +16 -0
- data/test/unit/freeze_test.rb +71 -0
- data/test/unit/inheritance_test.rb +26 -3
- data/test/unit/options_test.rb +20 -19
- data/test/unit/overriden_output_test.rb +33 -0
- data/test/unit/roxml_test.rb +7 -0
- data/test/unit/xml_bool_test.rb +16 -11
- data/test/unit/xml_convention_test.rb +150 -0
- data/test/unit/xml_hash_test.rb +41 -0
- data/test/unit/xml_name_test.rb +29 -6
- data/test/unit/xml_object_test.rb +30 -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
- metadata +77 -34
data/History.txt
ADDED
@@ -0,0 +1,145 @@
|
|
1
|
+
== 2.4.0 (January 15, 2009)
|
2
|
+
|
3
|
+
* 1 major enhancement
|
4
|
+
|
5
|
+
* Add xml_convention to enable easy defaulting to common naming formats, such as camel-case and
|
6
|
+
underscored [Ben Woosley]
|
7
|
+
|
8
|
+
* 6 minor enhancements
|
9
|
+
|
10
|
+
* Add :frozen option for freezing values on parse [Ben Woosley]
|
11
|
+
* Attempt to minimize node creation by better matching wrappers [Ben Woosley]
|
12
|
+
* Preserve hash values where a single key maps to multiple values, return them as an array rather
|
13
|
+
any single one of them at random (as in group_by rather than index_by) [Ben Woosley]
|
14
|
+
* Deprecate #xml_name? as it's only used for triggering the xml_name warning [Ben Woosley]
|
15
|
+
* REXML parser ignores whitespace, which doesn't matter to us anyway [Ben Woosley]
|
16
|
+
* xml_name is inherited by default [Ben Woosley]
|
17
|
+
|
18
|
+
* 2 bug fixes
|
19
|
+
|
20
|
+
* Don't detect objects which define their own empty? as being absent for the purposes
|
21
|
+
of :default and :required [Ben Woosley]
|
22
|
+
* Sub-objects pick up their parent's attributes, even if they're added after
|
23
|
+
the child's use [Ben Woosley]
|
24
|
+
|
25
|
+
== 2.3.2 (December 11, 2008)
|
26
|
+
|
27
|
+
* Fix that both false and nil values were excluded from to_xml output, when only nil values should be [Ben Woosley]
|
28
|
+
|
29
|
+
== 2.3.1 (December 9, 2008)
|
30
|
+
|
31
|
+
* Add missing dependencies to extensions/enumerable and Symbol.to_proc,
|
32
|
+
which are as-yet inexplicably pre-included on my system... [Ben Woosley, Per Melin]
|
33
|
+
|
34
|
+
== 2.3 (December 7, 2008)
|
35
|
+
|
36
|
+
* Fix a bug in the application of blocks to array types [Ben Woosley]
|
37
|
+
|
38
|
+
* Objects now inherit xml attributes from their parents, as they should [Ben Woosley, Per Melin]
|
39
|
+
|
40
|
+
* Add #xml_initialize, which is called at the end of #from_xml, after the xml attributes
|
41
|
+
are set. Deprecate the half-baked xml_construct in it's favor. [Ben Woosley]
|
42
|
+
|
43
|
+
* Fix a bug in the handling of empty Hash types [Ben Woosley]
|
44
|
+
|
45
|
+
* Implement automatic bool-ification when the accessor name ends with ?. [Ben Woosley]
|
46
|
+
|
47
|
+
* Add missing dependency ActiveSupport [Ben Woosley]
|
48
|
+
|
49
|
+
* Remove support for installing as a rails plugin [Ben Woosley]
|
50
|
+
|
51
|
+
* Fix a bug where xml_construct was using the refs' names rather than their accessor names for comparison [Ben Woosley]
|
52
|
+
|
53
|
+
* Significantly reduce our footprint by selectively including smaller parts of ActiveSupport and Extensions.
|
54
|
+
This avoids problems such as the conflict between ActiveSupport's #to_json and the JSON gem's #to_json.
|
55
|
+
Thanks to Per Melin for reporting this problem. [Ben Woosley]
|
56
|
+
|
57
|
+
* Rationalize sub-element xml naming by enforcing the following precedence for the containing xml of an object:
|
58
|
+
:from of parent, xml_name of child, parent's accessor name. The previous fallback did not include xml_name.
|
59
|
+
This new behavior is more consistent, explicit, predictable, and DRY, but it is a breaking change, so a warning
|
60
|
+
is printed to alert others of this behavior change. ROXML::SILENCE_XML_NAME_WARNING may be used to deactivate this
|
61
|
+
warning. [Ben Woosley, James W. Thompson, Delynn Berry]
|
62
|
+
|
63
|
+
== 2.2 (November 2, 2008)
|
64
|
+
|
65
|
+
* fix gem dependencies [James Healy]
|
66
|
+
|
67
|
+
* Add block shorthands for Float and Integer, which precede the block argume if present [Ben Woosley]
|
68
|
+
|
69
|
+
* Add :required option to throw on absence [Ben Woosley]
|
70
|
+
|
71
|
+
* Deprecate the non-specific #parse in favor of #from_xml [Ben Woosley]
|
72
|
+
|
73
|
+
* Fix a bug whereby the default value was carrying over information from one object to another [James Healy, Ben Woosley]
|
74
|
+
|
75
|
+
* Fix support for :in on :attr elements [Ben Woosley]
|
76
|
+
|
77
|
+
* Deprecate Array#to_h in favor of Array#to_hash [Ben Woosley]
|
78
|
+
|
79
|
+
* Deprecate Object#to_latin and Object#to_utf in favor of the same methods on String [Ben Woosley]
|
80
|
+
|
81
|
+
== 2.1 (October 3, 2008)
|
82
|
+
|
83
|
+
* rake test now uses the default parser selection [Ben Woosley]
|
84
|
+
|
85
|
+
* Added rcov code coverage for tests [Anders Engström]
|
86
|
+
|
87
|
+
* Accommodate that libxml requires you to name the default namespace when available [Ben Woosley]
|
88
|
+
|
89
|
+
* Enable optional selection of a parser through the early definition of ROXML::XML_PARSER
|
90
|
+
[Ben Woosley]
|
91
|
+
|
92
|
+
* Enable fallback to the REXML parser if LibXML is unavailable [Ben Woosley]
|
93
|
+
|
94
|
+
== 2.0 (September 20, 2008)
|
95
|
+
|
96
|
+
* :text_content becomes simply :content, and is joined by :name [Ben Woosley]
|
97
|
+
|
98
|
+
* Allow hash mapping from node names and contents: [Ben Woosley]
|
99
|
+
|
100
|
+
xml_reader :name, {:key => :name,
|
101
|
+
:value => :content}, :in => 'container'
|
102
|
+
|
103
|
+
* Allow supplying a default via the :else option [Ben Woosley]
|
104
|
+
|
105
|
+
* Allow hash mapping of text and attr elements: [Ben Woosley]
|
106
|
+
|
107
|
+
xml_reader :name, {:key => {:text => 'key_name'},
|
108
|
+
:value => {:attr => 'attr_name'}}, :in => 'container'
|
109
|
+
|
110
|
+
* Allow 'xml_reader :name, [Type]' as an alternative to 'xml_reader :name, Type, :as => :array'
|
111
|
+
[Ben Woosley]
|
112
|
+
|
113
|
+
* Allow attaching a block for manipulating a value on fetch: [Ben Woosley]
|
114
|
+
|
115
|
+
xml_accessor :count, :attr => 'my_int' do |val|
|
116
|
+
Integer(val)
|
117
|
+
end
|
118
|
+
|
119
|
+
* Collapse xml_attr, xml_text and xml_object into a single api: xml, patterned after the standard
|
120
|
+
attr, and offer xml_reader and xml_accessor as well. Remove the :readonly arg in the process
|
121
|
+
[Ben Woosley]
|
122
|
+
|
123
|
+
* Attach string extensions (#to_latin, #to_utf) to Object rather than String, so we don't have to
|
124
|
+
call #to_s first every time [Ben Woosley]
|
125
|
+
|
126
|
+
* Allow a ROXML object to call its constructor on initialization with the xml_construct function
|
127
|
+
[Ben Woosley]
|
128
|
+
|
129
|
+
* Use symbols (e.g. :text_content) rather than TAG_CONSTANTS (e.g. TEXT_CONTENT) for readability
|
130
|
+
[Ben Woosley]
|
131
|
+
|
132
|
+
* Use named arguments (e.g. :as, :in) rather than positional for clarity,
|
133
|
+
position-independence, and invisible exclusion [Ben Woosley]
|
134
|
+
|
135
|
+
* Split out rails_plugin_package_task_gem [Ben Woosley]
|
136
|
+
|
137
|
+
* Increase testing significantly, particularly on new functionality & to_xml [Ben Woosley]
|
138
|
+
|
139
|
+
== 1.2 (October 10, 2007)
|
140
|
+
|
141
|
+
* Fix a bug such that the TEXT_CONTENT tag is no longer also READ_ONLY [Russ Olsen]
|
142
|
+
|
143
|
+
== 1.1 (September 24, 2006)
|
144
|
+
|
145
|
+
* Initial design & development [Zak Mandhro & Anders Engstrom]
|
data/Manifest.txt
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
History.txt
|
2
|
+
MIT-LICENSE
|
3
|
+
Manifest.txt
|
4
|
+
README.rdoc
|
5
|
+
Rakefile
|
6
|
+
TODO
|
7
|
+
html/index.html
|
8
|
+
html/style.css
|
9
|
+
lib/roxml.rb
|
10
|
+
lib/roxml/extensions/active_support.rb
|
11
|
+
lib/roxml/extensions/array.rb
|
12
|
+
lib/roxml/extensions/array/conversions.rb
|
13
|
+
lib/roxml/extensions/deprecation.rb
|
14
|
+
lib/roxml/extensions/string.rb
|
15
|
+
lib/roxml/extensions/string/conversions.rb
|
16
|
+
lib/roxml/extensions/string/iterators.rb
|
17
|
+
lib/roxml/options.rb
|
18
|
+
lib/roxml/xml.rb
|
19
|
+
lib/roxml/xml/libxml.rb
|
20
|
+
lib/roxml/xml/rexml.rb
|
21
|
+
roxml.gemspec
|
22
|
+
tasks/test.rake
|
23
|
+
test/bugs/rexml_bugs.rb
|
24
|
+
test/fixtures/book_malformed.xml
|
25
|
+
test/fixtures/book_pair.xml
|
26
|
+
test/fixtures/book_text_with_attribute.xml
|
27
|
+
test/fixtures/book_valid.xml
|
28
|
+
test/fixtures/book_with_authors.xml
|
29
|
+
test/fixtures/book_with_contributions.xml
|
30
|
+
test/fixtures/book_with_contributors.xml
|
31
|
+
test/fixtures/book_with_contributors_attrs.xml
|
32
|
+
test/fixtures/book_with_default_namespace.xml
|
33
|
+
test/fixtures/book_with_depth.xml
|
34
|
+
test/fixtures/book_with_octal_pages.xml
|
35
|
+
test/fixtures/book_with_publisher.xml
|
36
|
+
test/fixtures/book_with_wrapped_attr.xml
|
37
|
+
test/fixtures/dictionary_of_attr_name_clashes.xml
|
38
|
+
test/fixtures/dictionary_of_attrs.xml
|
39
|
+
test/fixtures/dictionary_of_guarded_names.xml
|
40
|
+
test/fixtures/dictionary_of_mixeds.xml
|
41
|
+
test/fixtures/dictionary_of_name_clashes.xml
|
42
|
+
test/fixtures/dictionary_of_names.xml
|
43
|
+
test/fixtures/dictionary_of_texts.xml
|
44
|
+
test/fixtures/library.xml
|
45
|
+
test/fixtures/library_uppercase.xml
|
46
|
+
test/fixtures/muffins.xml
|
47
|
+
test/fixtures/nameless_ageless_youth.xml
|
48
|
+
test/fixtures/node_with_attr_name_conflicts.xml
|
49
|
+
test/fixtures/node_with_name_conflicts.xml
|
50
|
+
test/fixtures/numerology.xml
|
51
|
+
test/fixtures/person.xml
|
52
|
+
test/fixtures/person_with_guarded_mothers.xml
|
53
|
+
test/fixtures/person_with_mothers.xml
|
54
|
+
test/mocks/dictionaries.rb
|
55
|
+
test/mocks/mocks.rb
|
56
|
+
test/release/dependencies_test.rb
|
57
|
+
test/test_helper.rb
|
58
|
+
test/unit/array_test.rb
|
59
|
+
test/unit/freeze_test.rb
|
60
|
+
test/unit/inheritance_test.rb
|
61
|
+
test/unit/options_test.rb
|
62
|
+
test/unit/overriden_output_test.rb
|
63
|
+
test/unit/roxml_test.rb
|
64
|
+
test/unit/string_test.rb
|
65
|
+
test/unit/to_xml_test.rb
|
66
|
+
test/unit/xml_attribute_test.rb
|
67
|
+
test/unit/xml_block_test.rb
|
68
|
+
test/unit/xml_bool_test.rb
|
69
|
+
test/unit/xml_construct_test.rb
|
70
|
+
test/unit/xml_convention_test.rb
|
71
|
+
test/unit/xml_hash_test.rb
|
72
|
+
test/unit/xml_initialize_test.rb
|
73
|
+
test/unit/xml_name_test.rb
|
74
|
+
test/unit/xml_namespace_test.rb
|
75
|
+
test/unit/xml_object_test.rb
|
76
|
+
test/unit/xml_required_test.rb
|
77
|
+
test/unit/xml_text_test.rb
|
78
|
+
vendor/override_rake_task/README
|
79
|
+
vendor/override_rake_task/init.rb
|
80
|
+
vendor/override_rake_task/install.rb
|
81
|
+
vendor/override_rake_task/lib/override_rake_task.rb
|
data/Rakefile
CHANGED
@@ -1,100 +1,90 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
require
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
1
|
+
ENV['RUBY_FLAGS'] = '-W1'
|
2
|
+
|
3
|
+
%w[rubygems rake rake/clean fileutils newgem rubigen].each { |f| require f }
|
4
|
+
require File.join(File.dirname(__FILE__), 'lib/roxml')
|
5
|
+
|
6
|
+
# Generate all the Rake tasks
|
7
|
+
# Run 'rake -T' to see list of generated tasks (from gem root directory)
|
8
|
+
$hoe = Hoe.new('roxml', ROXML::VERSION) do |p|
|
9
|
+
p.author = ["Ben Woosley", "Zak Mandhro", "Anders Engstrom", "Russ Olsen"]
|
10
|
+
p.email = "ben.woosley@gmail.com"
|
11
|
+
p.url = "http://roxml.rubyforge.org"
|
12
|
+
p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
|
13
|
+
p.rubyforge_name = p.name.upcase
|
14
|
+
p.extra_deps = [
|
15
|
+
['activesupport','>= 2.1.0'],
|
16
|
+
['extensions', '>= 0.6.0']
|
17
|
+
]
|
18
|
+
p.extra_dev_deps = [
|
19
|
+
['newgem', ">= #{::Newgem::VERSION}"]
|
20
|
+
]
|
21
|
+
|
22
|
+
p.summary = "Ruby Object to XML mapping library"
|
23
|
+
p.description = <<EOF
|
24
|
+
ROXML is a Ruby library designed to make it easier for Ruby developers to work with XML.
|
25
|
+
Using simple annotations, it enables Ruby classes to be mapped to XML. ROXML takes care
|
26
|
+
of the marshalling and unmarshalling of mapped attributes so that developers can focus on
|
27
|
+
building first-class Ruby classes. As a result, ROXML simplifies the development of
|
28
|
+
RESTful applications, Web Services, and XML-RPC.
|
29
|
+
EOF
|
30
|
+
|
31
|
+
p.test_globs = 'test/unit/*_test.rb'
|
32
|
+
p.clean_globs |= %w[**/.DS_Store tmp *.log]
|
33
|
+
path = (p.rubyforge_name == p.name) ? p.rubyforge_name : "\#{p.rubyforge_name}/\#{p.name}"
|
34
|
+
p.remote_rdoc_dir = File.join(path.gsub(/^#{p.rubyforge_name}\/?/,''), 'rdoc')
|
35
|
+
p.rsync_args = '-av --delete --ignore-errors'
|
24
36
|
end
|
25
37
|
|
26
|
-
|
27
|
-
task :release_plugin=>:rails_plugin do |task|
|
28
|
-
pub = Rake::SshDirPublisher.new("#{RubyForgeConfig[:user_name]}@rubyforge.org",
|
29
|
-
"/var/www/gforge-projects/#{RubyForgeConfig[:unix_name]}",
|
30
|
-
"pkg/rails_plugin")
|
31
|
-
pub.upload()
|
32
|
-
end
|
38
|
+
require 'newgem/tasks' # load /tasks/*.rake
|
33
39
|
|
34
|
-
|
35
|
-
task :publish do |task|
|
36
|
-
pub = Rake::RubyForgePublisher.new(RubyForgeConfig[:unix_name], RubyForgeConfig[:user_name])
|
37
|
-
pub.upload()
|
38
|
-
end
|
39
|
-
|
40
|
-
desc "Install the gem"
|
41
|
-
task :install => [:package] do
|
42
|
-
sh %{sudo gem install pkg/#{spec.name}-#{spec.version}}
|
43
|
-
end
|
44
|
-
|
45
|
-
Rake::TestTask.new(:bugs) do |t|
|
46
|
-
t.libs << 'test'
|
47
|
-
t.test_files = FileList['test/bugs/*_bugs.rb']
|
48
|
-
t.verbose = true
|
49
|
-
end
|
40
|
+
Dir['tasks/**/*.rake'].each { |t| load t }
|
50
41
|
|
51
|
-
|
52
|
-
desc "Test ROXML using the default parser selection behavior"
|
53
|
-
task :test do
|
54
|
-
module ROXML
|
55
|
-
SILENCE_XML_NAME_WARNING = true
|
56
|
-
end
|
57
|
-
require 'lib/roxml'
|
58
|
-
require 'rake/runtest'
|
59
|
-
Rake.run_tests @test_files
|
60
|
-
end
|
61
|
-
|
62
|
-
namespace :test do
|
63
|
-
desc "Test ROXML under the LibXML parser"
|
64
|
-
task :libxml do
|
65
|
-
module ROXML
|
66
|
-
XML_PARSER = 'libxml'
|
67
|
-
end
|
68
|
-
Rake::Task["test"].invoke
|
69
|
-
end
|
70
|
-
|
71
|
-
desc "Test ROXML under the REXML parser"
|
72
|
-
task :rexml do
|
73
|
-
module ROXML
|
74
|
-
XML_PARSER = 'rexml'
|
75
|
-
end
|
76
|
-
Rake::Task["test"].invoke
|
77
|
-
end
|
78
|
-
|
79
|
-
desc "Runs tests under RCOV"
|
80
|
-
task :rcov do
|
81
|
-
system "rcov -T --no-html -x '^/' #{FileList[@test_files]}"
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
desc "Create the ZIP package"
|
86
|
-
Rake::PackageTask.new(spec.name, spec.version) do |p|
|
87
|
-
p.need_zip = true
|
88
|
-
p.package_files = FileList[
|
89
|
-
"lib/**/*.rb", "*.txt", "README.rdoc", "Rakefile",
|
90
|
-
"rake/**/*","test/**/*.rb", "test/**/*.xml", "html/**/*"]
|
91
|
-
end
|
92
|
-
|
93
|
-
task :package=>:rdoc
|
94
|
-
task :rdoc=>:test
|
95
|
-
|
96
|
-
desc "Create a RubyGem project"
|
97
|
-
Rake::GemPackageTask.new(spec).define
|
42
|
+
task :default => :test
|
98
43
|
|
99
|
-
|
100
|
-
|
44
|
+
## Provide the username used to upload website etc.
|
45
|
+
#RubyForgeConfig = {
|
46
|
+
# :unix_name=>"roxml",
|
47
|
+
# :user_name=>"zakmandhro"
|
48
|
+
#}
|
49
|
+
|
50
|
+
#Rake::RDocTask.new do |rd|
|
51
|
+
# rd.rdoc_dir = "doc"
|
52
|
+
# rd.rdoc_files.include('MIT-LICENSE', 'README.rdoc', "lib/**/*.rb")
|
53
|
+
# rd.options << '--main' << 'README.rdoc' << '--title' << 'ROXML Documentation'
|
54
|
+
#end
|
55
|
+
#
|
56
|
+
#desc "Publish Ruby on Rails plug-in on RubyForge"
|
57
|
+
#task :release_plugin=>:rails_plugin do |task|
|
58
|
+
# pub = Rake::SshDirPublisher.new("#{RubyForgeConfig[:user_name]}@rubyforge.org",
|
59
|
+
# "/var/www/gforge-projects/#{RubyForgeConfig[:unix_name]}",
|
60
|
+
# "pkg/rails_plugin")
|
61
|
+
# pub.upload()
|
62
|
+
#end
|
63
|
+
#
|
64
|
+
#desc "Publish and plugin site on RubyForge"
|
65
|
+
#task :publish do |task|
|
66
|
+
# pub = Rake::RubyForgePublisher.new(RubyForgeConfig[:unix_name], RubyForgeConfig[:user_name])
|
67
|
+
# pub.upload()
|
68
|
+
#end
|
69
|
+
#
|
70
|
+
#desc "Install the gem"
|
71
|
+
#task :install => [:package] do
|
72
|
+
# sh %{sudo gem install pkg/#{spec.name}-#{spec.version}}
|
73
|
+
#end
|
74
|
+
|
75
|
+
#desc "Create the ZIP package"
|
76
|
+
#Rake::PackageTask.new(spec.name, spec.version) do |p|
|
77
|
+
# p.need_zip = true
|
78
|
+
# p.package_files = FileList[
|
79
|
+
# "lib/**/*.rb", "*.txt", "README.rdoc", "Rakefile",
|
80
|
+
# "rake/**/*","test/**/*.rb", "test/**/*.xml", "html/**/*"]
|
81
|
+
#end
|
82
|
+
#
|
83
|
+
#task :package=>:rdoc
|
84
|
+
#task :rdoc=>:test
|
85
|
+
#
|
86
|
+
#desc "Create a RubyGem project"
|
87
|
+
#Rake::GemPackageTask.new(spec).define
|
88
|
+
#
|
89
|
+
#desc "Clobber generated files"
|
90
|
+
#task :clobber=>[:clobber_package, :clobber_rdoc]
|
data/TODO
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
Planned:
|
2
|
+
|
3
|
+
v 2.5
|
4
|
+
* Test out compatibility with ActiveRecord such that it's easy
|
5
|
+
to have both xml & database-sourced objects
|
6
|
+
|
7
|
+
* provide an overridable extension point for the #to_xml-ing of
|
8
|
+
values. This would enable easy accommodation of non-standard formats.
|
9
|
+
For example, formatting a number with leading zeros.
|
10
|
+
|
11
|
+
* Ensure (perhaps optionally) that references are unambiguous. That is error/warn
|
12
|
+
a singular specification has multiple possible node references
|
13
|
+
|
14
|
+
* Ensure support for nodes which aren't merely children, which hang out deep
|
15
|
+
in the file, but are accessible via xpath
|
16
|
+
|
17
|
+
v 3.0
|
18
|
+
* remove deprecated functionality
|
19
|
+
|
20
|
+
* Perhaps provide cleaner separation between the specification
|
21
|
+
of type vs its source in the XML. For example,
|
22
|
+
|
23
|
+
xml_reader :count, :from => 'Count, :in => 'Attributes', :as => Integer
|
24
|
+
xml_reader :count, :attr => 'Count, :in => 'Attributes', :as => Integer
|
25
|
+
|
26
|
+
become:
|
27
|
+
|
28
|
+
xml_reader :count, Integer, 'Atributes/Count'
|
29
|
+
xml_reader :count, Integer, 'Atributes/@Count'
|
30
|
+
|
31
|
+
potentially backward-incompatible change. Needs some thought...
|
32
|
+
|
33
|
+
* Back with XmlSimple/FasterXmlSimple to minimize need for specifications
|
34
|
+
|
35
|
+
* Use lazy evaluation to minimize parsing time for large files
|
36
|
+
|
37
|
+
Potential:
|
38
|
+
|
39
|
+
* Add shorthand support to hash declaration
|
40
|
+
|
41
|
+
* :as => :self for sending method_missing to this attribute
|
42
|
+
|