roxml 2.5.3 → 3.1.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.
Files changed (76) hide show
  1. data/.gitignore +7 -0
  2. data/.gitmodules +3 -0
  3. data/History.txt +38 -1
  4. data/README.rdoc +8 -5
  5. data/Rakefile +35 -36
  6. data/TODO +12 -35
  7. data/VERSION +1 -0
  8. data/examples/amazon.rb +8 -6
  9. data/examples/posts.rb +1 -1
  10. data/examples/{active_record.rb → rails.rb} +2 -2
  11. data/examples/twitter.rb +1 -1
  12. data/lib/roxml.rb +86 -151
  13. data/lib/roxml/definition.rb +64 -152
  14. data/lib/roxml/hash_definition.rb +5 -40
  15. data/lib/roxml/xml.rb +12 -9
  16. data/lib/roxml/xml/parsers/libxml.rb +22 -17
  17. data/lib/roxml/xml/parsers/nokogiri.rb +77 -0
  18. data/lib/roxml/xml/references.rb +66 -57
  19. data/roxml.gemspec +170 -19
  20. data/spec/definition_spec.rb +121 -198
  21. data/spec/examples/active_record_spec.rb +2 -2
  22. data/spec/examples/amazon_spec.rb +3 -2
  23. data/spec/examples/current_weather_spec.rb +2 -2
  24. data/spec/examples/dashed_elements_spec.rb +2 -2
  25. data/spec/examples/library_spec.rb +11 -6
  26. data/spec/examples/post_spec.rb +3 -3
  27. data/spec/examples/twitter_spec.rb +2 -2
  28. data/spec/roxml_spec.rb +15 -15
  29. data/spec/shared_specs.rb +1 -1
  30. data/spec/spec_helper.rb +8 -27
  31. data/spec/support/libxml.rb +3 -0
  32. data/spec/support/nokogiri.rb +3 -0
  33. data/spec/xml/attributes_spec.rb +36 -0
  34. data/spec/xml/namespace_spec.rb +240 -0
  35. data/spec/xml/namespaces_spec.rb +32 -0
  36. data/spec/xml/parser_spec.rb +9 -30
  37. data/tasks/rdoc.rake +13 -0
  38. data/tasks/rspec.rake +21 -17
  39. data/tasks/test.rake +13 -20
  40. data/test/mocks/dictionaries.rb +8 -7
  41. data/test/mocks/mocks.rb +20 -20
  42. data/test/support/fixtures.rb +11 -0
  43. data/test/test_helper.rb +3 -14
  44. data/test/unit/definition_test.rb +21 -95
  45. data/test/unit/deprecations_test.rb +1 -74
  46. data/test/unit/to_xml_test.rb +3 -3
  47. data/test/unit/xml_attribute_test.rb +1 -1
  48. data/test/unit/xml_block_test.rb +3 -3
  49. data/test/unit/xml_bool_test.rb +4 -4
  50. data/test/unit/xml_convention_test.rb +3 -3
  51. data/test/unit/xml_hash_test.rb +5 -14
  52. data/test/unit/xml_initialize_test.rb +2 -6
  53. data/test/unit/xml_name_test.rb +5 -24
  54. data/test/unit/xml_namespace_test.rb +1 -46
  55. data/test/unit/xml_object_test.rb +6 -6
  56. data/test/unit/xml_required_test.rb +3 -2
  57. data/test/unit/xml_text_test.rb +2 -2
  58. data/website/index.html +1 -1
  59. metadata +68 -51
  60. data/Manifest.txt +0 -106
  61. data/lib/roxml/extensions.rb +0 -6
  62. data/lib/roxml/extensions/array.rb +0 -13
  63. data/lib/roxml/extensions/array/conversions.rb +0 -35
  64. data/lib/roxml/extensions/deprecation.rb +0 -33
  65. data/lib/roxml/extensions/string.rb +0 -21
  66. data/lib/roxml/extensions/string/conversions.rb +0 -43
  67. data/lib/roxml/extensions/string/iterators.rb +0 -12
  68. data/lib/roxml/xml/parsers/rexml.rb +0 -84
  69. data/spec/string_spec.rb +0 -15
  70. data/test/bugs/rexml_bugs.rb +0 -15
  71. data/test/release/dependencies_test.rb +0 -32
  72. data/test/unit/xml_construct_test.rb +0 -77
  73. data/vendor/override_rake_task/README +0 -30
  74. data/vendor/override_rake_task/init.rb +0 -1
  75. data/vendor/override_rake_task/install.rb +0 -46
  76. data/vendor/override_rake_task/lib/override_rake_task.rb +0 -16
@@ -0,0 +1,77 @@
1
+ require 'nokogiri'
2
+
3
+ module ROXML
4
+ module XML # :nodoc:all
5
+ Document = Nokogiri::XML::Document
6
+ Element = Nokogiri::XML::Element
7
+ Node = Nokogiri::XML::Node
8
+
9
+ module Error; end
10
+
11
+ class Parser
12
+ class << self
13
+ def parse(string)
14
+ Nokogiri::XML(string)
15
+ end
16
+
17
+ def parse_file(path) #:nodoc:
18
+ path = path.sub('file:', '') if path.starts_with?('file:')
19
+ parse(open(path))
20
+ end
21
+
22
+ def parse_io(stream) #:nodoc:
23
+ parse(stream)
24
+ end
25
+ end
26
+ end
27
+
28
+ class Document
29
+ def save(path)
30
+ open(path, 'w') do |file|
31
+ file << serialize
32
+ end
33
+ end
34
+
35
+ def default_namespace
36
+ 'xmlns' if root.namespaces['xmlns']
37
+ end
38
+ end
39
+
40
+ module NodeExtensions
41
+ def search(xpath, roxml_namespaces = {})
42
+ xpath = "./#{xpath}"
43
+ (roxml_namespaces.present? ? super(xpath, roxml_namespaces) : super(xpath)).map {|i| i }
44
+ end
45
+
46
+ def attributes
47
+ self
48
+ end
49
+
50
+ def default_namespace
51
+ document.default_namespace
52
+ end
53
+ end
54
+
55
+ class Element
56
+ include NodeExtensions
57
+
58
+ def empty?
59
+ children.empty?
60
+ end
61
+ end
62
+
63
+ class Node
64
+ class << self
65
+ def new_cdata(content)
66
+ Nokogiri::XML::CDATA.new(Document.new, content)
67
+ end
68
+
69
+ def create(name)
70
+ new(name, Document.new)
71
+ end
72
+ end
73
+ include NodeExtensions
74
+ alias :remove! :remove
75
+ end
76
+ end
77
+ end
@@ -6,15 +6,15 @@ module ROXML
6
6
  # Internal base class that represents an XML - Class binding.
7
7
  #
8
8
  class XMLRef # :nodoc:
9
- delegate :required?, :array?, :blocks, :accessor, :variable_name, :default, :to => :opts
9
+ delegate :required?, :array?, :blocks, :accessor, :default, :wrapper, :to => :opts
10
10
 
11
11
  def initialize(opts, instance)
12
12
  @opts = opts
13
13
  @instance = instance
14
14
  end
15
15
 
16
- def to_xml
17
- val = @instance.__send__(accessor)
16
+ def to_xml(instance)
17
+ val = instance.__send__(accessor)
18
18
  opts.to_xml.respond_to?(:call) ? opts.to_xml.call(val) : val
19
19
  end
20
20
 
@@ -29,11 +29,7 @@ module ROXML
29
29
  end
30
30
 
31
31
  def xpath_name
32
- if !opts.name_explicit? && namespace = @instance.class.roxml_namespace
33
- "#{namespace}:#{name}"
34
- else
35
- name
36
- end
32
+ namespacify(name)
37
33
  end
38
34
 
39
35
  def value_in(xml)
@@ -56,13 +52,20 @@ module ROXML
56
52
  end
57
53
  end
58
54
 
59
- def wrapper
60
- conventionize(opts.wrapper)
55
+ def namespacify(what)
56
+ return "#{opts.namespace}:#{what}" if opts.namespace
57
+
58
+ namespace = @instance.class.roxml_namespace || @default_namespace
59
+ if namespace && what.present? && !what.include?(':') && (opts.namespace != false)
60
+ "#{namespace}:#{what}"
61
+ else
62
+ what
63
+ end
61
64
  end
62
65
 
63
66
  def apply_blocks(val)
64
67
  begin
65
- blocks.apply_to(val)
68
+ blocks.inject(val) {|val, block| block.call(val) }
66
69
  rescue Exception => ex
67
70
  raise ex, "#{accessor}: #{ex.message}"
68
71
  end
@@ -78,11 +81,15 @@ module ROXML
78
81
  end
79
82
 
80
83
  def xpath
81
- wrapper ? "#{wrapper}/#{xpath_name}" : xpath_name.to_s
84
+ opts.wrapper ? "#{namespacify(opts.wrapper)}/#{xpath_name}" : xpath_name.to_s
82
85
  end
83
86
 
84
87
  def auto_xpath
85
- "#{conventionize(opts.name.pluralize)}/#{xpath_name}" if array?
88
+ "#{namespacify(conventionize(opts.name.pluralize))}/#{xpath_name}" if array?
89
+ end
90
+
91
+ def several?
92
+ array?
86
93
  end
87
94
 
88
95
  def wrap(xml)
@@ -90,22 +97,27 @@ module ROXML
90
97
  if child = xml.children.find {|c| c.name == wrapper }
91
98
  return child
92
99
  end
93
- xml.add_child(XML::Node.new(wrapper.to_s))
100
+ xml.add_child(XML::Node.create(wrapper.to_s))
94
101
  end
95
102
 
96
103
  def nodes_in(xml)
97
- vals = xml.search(xpath)
104
+ @default_namespace = xml.default_namespace
105
+ vals = xml.search(xpath, @instance.class.roxml_namespaces)
98
106
 
99
- if (opts.hash? || opts.array?) && vals.empty? && !wrapper && auto_xpath
100
- vals = xml.search(auto_xpath)
107
+ if several? && vals.empty? && !wrapper && auto_xpath
108
+ vals = xml.search(auto_xpath, @instance.class.roxml_namespaces)
101
109
  @auto_vals = !vals.empty?
102
110
  end
103
111
 
104
112
  if vals.empty?
105
113
  raise RequiredElementMissing, "#{name} from #{xml} for #{accessor}" if required?
106
114
  default
115
+ elsif several?
116
+ vals.map do |val|
117
+ yield val
118
+ end
107
119
  else
108
- yield(vals)
120
+ yield(vals.first)
109
121
  end
110
122
  end
111
123
  end
@@ -121,12 +133,12 @@ module ROXML
121
133
  # Updates the attribute in the given XML block to
122
134
  # the value provided.
123
135
  def write_xml(xml, value)
124
- xml.attributes[name] = value.to_s.to_utf_without_deprecation
136
+ xml.attributes[name] = value.to_s
125
137
  end
126
138
 
127
139
  def fetch_value(xml)
128
- nodes_in(xml) do |nodes|
129
- nodes.first.value
140
+ nodes_in(xml) do |node|
141
+ node.value
130
142
  end
131
143
  end
132
144
 
@@ -154,10 +166,10 @@ module ROXML
154
166
  xml.name = value
155
167
  elsif array?
156
168
  value.each do |v|
157
- add(xml.add_child(XML::Node.new(name)), v)
169
+ add(xml.add_child(XML::Node.create(name)), v)
158
170
  end
159
171
  else
160
- add(xml.add_child(XML::Node.new(name)), value)
172
+ add(xml.add_child(XML::Node.create(name)), value)
161
173
  end
162
174
  end
163
175
 
@@ -177,23 +189,17 @@ module ROXML
177
189
  value
178
190
  end
179
191
  else
180
- nodes_in(xml) do |nodes|
181
- if array?
182
- nodes.collect do |e|
183
- e.content.strip.to_latin_without_deprecation
184
- end
185
- else
186
- nodes.first.content
187
- end
192
+ nodes_in(xml) do |node|
193
+ node.content.strip
188
194
  end
189
195
  end
190
196
  end
191
197
 
192
198
  def add(dest, value)
193
199
  if cdata?
194
- dest.child_add(XML::Node.new_cdata(value.to_s.to_utf_without_deprecation))
200
+ dest.add_child(XML::Node.new_cdata(value.to_s))
195
201
  else
196
- dest.content = value.to_s.to_utf_without_deprecation
202
+ dest.content = value.to_s
197
203
  end
198
204
  end
199
205
  end
@@ -207,22 +213,24 @@ module ROXML
207
213
  @value = opts.hash.value.to_ref(inst)
208
214
  end
209
215
 
216
+ def several?
217
+ true
218
+ end
219
+
210
220
  private
211
221
  # Updates the composed XML object in the given XML block to
212
222
  # the value provided.
213
223
  def write_xml(xml, value)
214
224
  value.each_pair do |k, v|
215
- node = xml.child_add(XML::Node.new(hash.wrapper))
225
+ node = xml.add_child(XML::Node.create(hash.wrapper))
216
226
  @key.update_xml(node, k)
217
227
  @value.update_xml(node, v)
218
228
  end
219
229
  end
220
230
 
221
231
  def fetch_value(xml)
222
- nodes_in(xml) do |nodes|
223
- nodes.collect do |e|
224
- [@key.value_in(e), @value.value_in(e)]
225
- end
232
+ nodes_in(xml) do |node|
233
+ [@key.value_in(node), @value.value_in(node)]
226
234
  end
227
235
  end
228
236
 
@@ -232,7 +240,7 @@ module ROXML
232
240
  super(kvp)
233
241
  end
234
242
  end
235
- vals.to_hash if vals
243
+ to_hash(vals) if vals
236
244
  end
237
245
 
238
246
  def freeze(vals)
@@ -243,6 +251,17 @@ module ROXML
243
251
  vals
244
252
  end
245
253
  end
254
+
255
+ def to_hash(array)
256
+ hash = array.inject({}) do |result, (k, v)|
257
+ result[k] ||= []
258
+ result[k] << v
259
+ result
260
+ end
261
+ hash.each_pair do |k, v|
262
+ hash[k] = v.first if v.size == 1
263
+ end
264
+ end
246
265
  end
247
266
 
248
267
  class XMLObjectRef < XMLTextRef # :nodoc:
@@ -254,35 +273,25 @@ module ROXML
254
273
  def write_xml(xml, value)
255
274
  if array?
256
275
  value.each do |v|
257
- xml.child_add(v.to_xml(name))
276
+ xml.add_child(v.to_xml(name))
258
277
  end
259
278
  elsif value.is_a?(ROXML)
260
- xml.child_add(value.to_xml(name))
279
+ xml.add_child(value.to_xml(name))
261
280
  else
262
- node = XML::Node.new(name)
281
+ node = XML::Node.create(name)
263
282
  node.content = value.to_xml
264
- xml.child_add(node)
283
+ xml.add_child(node)
265
284
  end
266
285
  end
267
286
 
268
287
  def fetch_value(xml)
269
- nodes_in(xml) do |nodes|
270
- unless array?
271
- instantiate(nodes.first)
288
+ nodes_in(xml) do |node|
289
+ if type.respond_to? :from_xml
290
+ type.from_xml(node)
272
291
  else
273
- nodes.collect do |e|
274
- instantiate(e)
275
- end
292
+ type.new(node)
276
293
  end
277
294
  end
278
295
  end
279
-
280
- def instantiate(elem)
281
- if type.respond_to? :from_xml
282
- type.from_xml(elem)
283
- else
284
- type.new(elem)
285
- end
286
- end
287
296
  end
288
297
  end
@@ -1,50 +1,201 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
1
4
  # -*- encoding: utf-8 -*-
2
5
 
3
6
  Gem::Specification.new do |s|
4
7
  s.name = %q{roxml}
5
- s.version = "2.5.3"
8
+ s.version = "3.1.0"
6
9
 
7
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
11
  s.authors = ["Ben Woosley", "Zak Mandhro", "Anders Engstrom", "Russ Olsen"]
9
- s.date = %q{2009-03-22}
10
- s.description = %q{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.}
12
+ s.date = %q{2009-10-16}
13
+ s.description = %q{ROXML is a Ruby library designed to make it easier for Ruby developers to work with XML.
14
+ Using simple annotations, it enables Ruby classes to be mapped to XML. ROXML takes care
15
+ of the marshalling and unmarshalling of mapped attributes so that developers can focus on
16
+ building first-class Ruby classes. As a result, ROXML simplifies the development of
17
+ RESTful applications, Web Services, and XML-RPC.
18
+ }
11
19
  s.email = %q{ben.woosley@gmail.com}
12
- s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.rdoc"]
13
- s.files = ["History.txt", "MIT-LICENSE", "Manifest.txt", "README.rdoc", "Rakefile", "TODO", "config/website.yml", "examples/active_record.rb", "examples/amazon.rb", "examples/current_weather.rb", "examples/dashed_elements.rb", "examples/library.rb", "examples/posts.rb", "examples/twitter.rb", "examples/xml/active_record.xml", "examples/xml/amazon.xml", "examples/xml/current_weather.xml", "examples/xml/dashed_elements.xml", "examples/xml/posts.xml", "examples/xml/twitter.xml", "lib/roxml.rb", "lib/roxml/definition.rb", "lib/roxml/extensions.rb", "lib/roxml/extensions/array.rb", "lib/roxml/extensions/array/conversions.rb", "lib/roxml/extensions/deprecation.rb", "lib/roxml/extensions/string.rb", "lib/roxml/extensions/string/conversions.rb", "lib/roxml/extensions/string/iterators.rb", "lib/roxml/hash_definition.rb", "lib/roxml/xml.rb", "lib/roxml/xml/parsers/libxml.rb", "lib/roxml/xml/parsers/rexml.rb", "lib/roxml/xml/references.rb", "roxml.gemspec", "spec/definition_spec.rb", "spec/examples/active_record_spec.rb", "spec/examples/amazon_spec.rb", "spec/examples/current_weather_spec.rb", "spec/examples/dashed_elements_spec.rb", "spec/examples/library_spec.rb", "spec/examples/post_spec.rb", "spec/examples/twitter_spec.rb", "spec/roxml_spec.rb", "spec/shared_specs.rb", "spec/spec.opts", "spec/spec_helper.rb", "spec/string_spec.rb", "spec/xml/parser_spec.rb", "tasks/rspec.rake", "tasks/test.rake", "test/bugs/rexml_bugs.rb", "test/fixtures/book_malformed.xml", "test/fixtures/book_pair.xml", "test/fixtures/book_text_with_attribute.xml", "test/fixtures/book_valid.xml", "test/fixtures/book_with_authors.xml", "test/fixtures/book_with_contributions.xml", "test/fixtures/book_with_contributors.xml", "test/fixtures/book_with_contributors_attrs.xml", "test/fixtures/book_with_default_namespace.xml", "test/fixtures/book_with_depth.xml", "test/fixtures/book_with_octal_pages.xml", "test/fixtures/book_with_publisher.xml", "test/fixtures/book_with_wrapped_attr.xml", "test/fixtures/dictionary_of_attr_name_clashes.xml", "test/fixtures/dictionary_of_attrs.xml", "test/fixtures/dictionary_of_guarded_names.xml", "test/fixtures/dictionary_of_mixeds.xml", "test/fixtures/dictionary_of_name_clashes.xml", "test/fixtures/dictionary_of_names.xml", "test/fixtures/dictionary_of_texts.xml", "test/fixtures/library.xml", "test/fixtures/library_uppercase.xml", "test/fixtures/muffins.xml", "test/fixtures/nameless_ageless_youth.xml", "test/fixtures/node_with_attr_name_conflicts.xml", "test/fixtures/node_with_name_conflicts.xml", "test/fixtures/numerology.xml", "test/fixtures/person.xml", "test/fixtures/person_with_guarded_mothers.xml", "test/fixtures/person_with_mothers.xml", "test/mocks/dictionaries.rb", "test/mocks/mocks.rb", "test/release/dependencies_test.rb", "test/test_helper.rb", "test/unit/definition_test.rb", "test/unit/deprecations_test.rb", "test/unit/to_xml_test.rb", "test/unit/xml_attribute_test.rb", "test/unit/xml_block_test.rb", "test/unit/xml_bool_test.rb", "test/unit/xml_construct_test.rb", "test/unit/xml_convention_test.rb", "test/unit/xml_hash_test.rb", "test/unit/xml_initialize_test.rb", "test/unit/xml_name_test.rb", "test/unit/xml_namespace_test.rb", "test/unit/xml_object_test.rb", "test/unit/xml_required_test.rb", "test/unit/xml_text_test.rb", "vendor/override_rake_task/README", "vendor/override_rake_task/init.rb", "vendor/override_rake_task/install.rb", "vendor/override_rake_task/lib/override_rake_task.rb", "website/index.html"]
14
- s.has_rdoc = true
20
+ s.extra_rdoc_files = [
21
+ "History.txt",
22
+ "README.rdoc"
23
+ ]
24
+ s.files = [
25
+ ".gitignore",
26
+ ".gitmodules",
27
+ "History.txt",
28
+ "MIT-LICENSE",
29
+ "README.rdoc",
30
+ "Rakefile",
31
+ "TODO",
32
+ "VERSION",
33
+ "config/website.yml",
34
+ "examples/amazon.rb",
35
+ "examples/current_weather.rb",
36
+ "examples/dashed_elements.rb",
37
+ "examples/library.rb",
38
+ "examples/posts.rb",
39
+ "examples/rails.rb",
40
+ "examples/twitter.rb",
41
+ "examples/xml/active_record.xml",
42
+ "examples/xml/amazon.xml",
43
+ "examples/xml/current_weather.xml",
44
+ "examples/xml/dashed_elements.xml",
45
+ "examples/xml/posts.xml",
46
+ "examples/xml/twitter.xml",
47
+ "lib/roxml.rb",
48
+ "lib/roxml/definition.rb",
49
+ "lib/roxml/hash_definition.rb",
50
+ "lib/roxml/xml.rb",
51
+ "lib/roxml/xml/parsers/libxml.rb",
52
+ "lib/roxml/xml/parsers/nokogiri.rb",
53
+ "lib/roxml/xml/references.rb",
54
+ "roxml.gemspec",
55
+ "spec/definition_spec.rb",
56
+ "spec/examples/active_record_spec.rb",
57
+ "spec/examples/amazon_spec.rb",
58
+ "spec/examples/current_weather_spec.rb",
59
+ "spec/examples/dashed_elements_spec.rb",
60
+ "spec/examples/library_spec.rb",
61
+ "spec/examples/post_spec.rb",
62
+ "spec/examples/twitter_spec.rb",
63
+ "spec/roxml_spec.rb",
64
+ "spec/shared_specs.rb",
65
+ "spec/spec.opts",
66
+ "spec/spec_helper.rb",
67
+ "spec/support/libxml.rb",
68
+ "spec/support/nokogiri.rb",
69
+ "spec/xml/attributes_spec.rb",
70
+ "spec/xml/namespace_spec.rb",
71
+ "spec/xml/namespaces_spec.rb",
72
+ "spec/xml/parser_spec.rb",
73
+ "tasks/rdoc.rake",
74
+ "tasks/rspec.rake",
75
+ "tasks/test.rake",
76
+ "test/fixtures/book_malformed.xml",
77
+ "test/fixtures/book_pair.xml",
78
+ "test/fixtures/book_text_with_attribute.xml",
79
+ "test/fixtures/book_valid.xml",
80
+ "test/fixtures/book_with_authors.xml",
81
+ "test/fixtures/book_with_contributions.xml",
82
+ "test/fixtures/book_with_contributors.xml",
83
+ "test/fixtures/book_with_contributors_attrs.xml",
84
+ "test/fixtures/book_with_default_namespace.xml",
85
+ "test/fixtures/book_with_depth.xml",
86
+ "test/fixtures/book_with_octal_pages.xml",
87
+ "test/fixtures/book_with_publisher.xml",
88
+ "test/fixtures/book_with_wrapped_attr.xml",
89
+ "test/fixtures/dictionary_of_attr_name_clashes.xml",
90
+ "test/fixtures/dictionary_of_attrs.xml",
91
+ "test/fixtures/dictionary_of_guarded_names.xml",
92
+ "test/fixtures/dictionary_of_mixeds.xml",
93
+ "test/fixtures/dictionary_of_name_clashes.xml",
94
+ "test/fixtures/dictionary_of_names.xml",
95
+ "test/fixtures/dictionary_of_texts.xml",
96
+ "test/fixtures/library.xml",
97
+ "test/fixtures/library_uppercase.xml",
98
+ "test/fixtures/muffins.xml",
99
+ "test/fixtures/nameless_ageless_youth.xml",
100
+ "test/fixtures/node_with_attr_name_conflicts.xml",
101
+ "test/fixtures/node_with_name_conflicts.xml",
102
+ "test/fixtures/numerology.xml",
103
+ "test/fixtures/person.xml",
104
+ "test/fixtures/person_with_guarded_mothers.xml",
105
+ "test/fixtures/person_with_mothers.xml",
106
+ "test/mocks/dictionaries.rb",
107
+ "test/mocks/mocks.rb",
108
+ "test/support/fixtures.rb",
109
+ "test/test_helper.rb",
110
+ "test/unit/definition_test.rb",
111
+ "test/unit/deprecations_test.rb",
112
+ "test/unit/to_xml_test.rb",
113
+ "test/unit/xml_attribute_test.rb",
114
+ "test/unit/xml_block_test.rb",
115
+ "test/unit/xml_bool_test.rb",
116
+ "test/unit/xml_convention_test.rb",
117
+ "test/unit/xml_hash_test.rb",
118
+ "test/unit/xml_initialize_test.rb",
119
+ "test/unit/xml_name_test.rb",
120
+ "test/unit/xml_namespace_test.rb",
121
+ "test/unit/xml_object_test.rb",
122
+ "test/unit/xml_required_test.rb",
123
+ "test/unit/xml_text_test.rb",
124
+ "website/index.html"
125
+ ]
15
126
  s.homepage = %q{http://roxml.rubyforge.org}
16
- s.rdoc_options = ["--main", "README.rdoc"]
127
+ s.rdoc_options = ["--charset=UTF-8"]
17
128
  s.require_paths = ["lib"]
18
129
  s.rubyforge_project = %q{roxml}
19
- s.rubygems_version = %q{1.3.1}
130
+ s.rubygems_version = %q{1.3.5}
20
131
  s.summary = %q{Ruby Object to XML mapping library}
21
- s.test_files = ["test/unit/definition_test.rb", "test/unit/deprecations_test.rb", "test/unit/to_xml_test.rb", "test/unit/xml_attribute_test.rb", "test/unit/xml_block_test.rb", "test/unit/xml_bool_test.rb", "test/unit/xml_construct_test.rb", "test/unit/xml_convention_test.rb", "test/unit/xml_hash_test.rb", "test/unit/xml_initialize_test.rb", "test/unit/xml_name_test.rb", "test/unit/xml_namespace_test.rb", "test/unit/xml_object_test.rb", "test/unit/xml_required_test.rb", "test/unit/xml_text_test.rb"]
132
+ s.test_files = [
133
+ "spec/definition_spec.rb",
134
+ "spec/examples/active_record_spec.rb",
135
+ "spec/examples/amazon_spec.rb",
136
+ "spec/examples/current_weather_spec.rb",
137
+ "spec/examples/dashed_elements_spec.rb",
138
+ "spec/examples/library_spec.rb",
139
+ "spec/examples/post_spec.rb",
140
+ "spec/examples/twitter_spec.rb",
141
+ "spec/roxml_spec.rb",
142
+ "spec/shared_specs.rb",
143
+ "spec/spec_helper.rb",
144
+ "spec/support/libxml.rb",
145
+ "spec/support/nokogiri.rb",
146
+ "spec/xml/attributes_spec.rb",
147
+ "spec/xml/namespace_spec.rb",
148
+ "spec/xml/namespaces_spec.rb",
149
+ "spec/xml/parser_spec.rb",
150
+ "test/mocks/dictionaries.rb",
151
+ "test/mocks/mocks.rb",
152
+ "test/support/fixtures.rb",
153
+ "test/test_helper.rb",
154
+ "test/unit/definition_test.rb",
155
+ "test/unit/deprecations_test.rb",
156
+ "test/unit/to_xml_test.rb",
157
+ "test/unit/xml_attribute_test.rb",
158
+ "test/unit/xml_block_test.rb",
159
+ "test/unit/xml_bool_test.rb",
160
+ "test/unit/xml_convention_test.rb",
161
+ "test/unit/xml_hash_test.rb",
162
+ "test/unit/xml_initialize_test.rb",
163
+ "test/unit/xml_name_test.rb",
164
+ "test/unit/xml_namespace_test.rb",
165
+ "test/unit/xml_object_test.rb",
166
+ "test/unit/xml_required_test.rb",
167
+ "test/unit/xml_text_test.rb",
168
+ "examples/amazon.rb",
169
+ "examples/current_weather.rb",
170
+ "examples/dashed_elements.rb",
171
+ "examples/library.rb",
172
+ "examples/posts.rb",
173
+ "examples/rails.rb",
174
+ "examples/twitter.rb"
175
+ ]
22
176
 
23
177
  if s.respond_to? :specification_version then
24
178
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
25
- s.specification_version = 2
179
+ s.specification_version = 3
26
180
 
27
181
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
28
182
  s.add_runtime_dependency(%q<activesupport>, [">= 2.1.0"])
29
- s.add_runtime_dependency(%q<libxml-ruby>, [">= 1.0.0"])
30
- s.add_development_dependency(%q<newgem>, [">= 1.3.0"])
183
+ s.add_runtime_dependency(%q<nokogiri>, [">= 1.3.3"])
184
+ s.add_development_dependency(%q<rspec>, [">= 0"])
31
185
  s.add_development_dependency(%q<sqlite3-ruby>, [">= 1.2.4"])
32
186
  s.add_development_dependency(%q<activerecord>, [">= 2.2.2"])
33
- s.add_development_dependency(%q<hoe>, [">= 1.8.0"])
34
187
  else
35
188
  s.add_dependency(%q<activesupport>, [">= 2.1.0"])
36
- s.add_dependency(%q<libxml-ruby>, [">= 1.0.0"])
37
- s.add_dependency(%q<newgem>, [">= 1.3.0"])
189
+ s.add_dependency(%q<nokogiri>, [">= 1.3.3"])
190
+ s.add_dependency(%q<rspec>, [">= 0"])
38
191
  s.add_dependency(%q<sqlite3-ruby>, [">= 1.2.4"])
39
192
  s.add_dependency(%q<activerecord>, [">= 2.2.2"])
40
- s.add_dependency(%q<hoe>, [">= 1.8.0"])
41
193
  end
42
194
  else
43
195
  s.add_dependency(%q<activesupport>, [">= 2.1.0"])
44
- s.add_dependency(%q<libxml-ruby>, [">= 1.0.0"])
45
- s.add_dependency(%q<newgem>, [">= 1.3.0"])
196
+ s.add_dependency(%q<nokogiri>, [">= 1.3.3"])
197
+ s.add_dependency(%q<rspec>, [">= 0"])
46
198
  s.add_dependency(%q<sqlite3-ruby>, [">= 1.2.4"])
47
199
  s.add_dependency(%q<activerecord>, [">= 2.2.2"])
48
- s.add_dependency(%q<hoe>, [">= 1.8.0"])
49
200
  end
50
201
  end