xmlcodec 0.1.3 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -32,6 +32,7 @@ module XMLCodec
32
32
  # passed to the constructor. This is cached so the object will only be
33
33
  # created once. All subsequent calls will return the same object.
34
34
  def get_object
35
+ return nil if not @elclass
35
36
  if not @object
36
37
  @object = @elclass.new_with_content(@attrs, @children)
37
38
  if @parent
@@ -59,7 +60,7 @@ module XMLCodec
59
60
  # The listener will be passed XMLSOParserElement objects. The two relevant
60
61
  # methods for it's use are XMLSOParserElement#get_object and
61
62
  # XMLSOParserElement#consume.
62
- class XMLStreamObjectParser
63
+ class XMLStreamObjectParser < Nokogiri::XML::SAX::Document
63
64
  # Create a new parser with a listener.
64
65
  def initialize(base_element, listener=nil)
65
66
  @base_element = base_element
@@ -92,7 +93,8 @@ module XMLCodec
92
93
  # Parse the text with the stream parser calling the listener on any events
93
94
  # that it listens to.
94
95
  def parse(text)
95
- REXML::Document.parse_stream(text, self)
96
+ parser = Nokogiri::XML::SAX::Parser.new(self)
97
+ parser.parse(text)
96
98
  end
97
99
 
98
100
  # Get the current top element of the parse. This is usually used to get the
@@ -101,18 +103,18 @@ module XMLCodec
101
103
  @top_element.get_object if @top_element
102
104
  end
103
105
 
104
- def tag_start(name, attrs) #:nodoc:
106
+ def start_element(name, attrs) #:nodoc:
105
107
  @elements << XMLSOParserElement.new(name, attrs, get_elclass(name),
106
108
  curr_element, next_id,
107
109
  curr_element.depth+1)
108
110
  @currel += 1
109
111
  end
110
112
 
111
- def text(text) #:nodoc:
113
+ def characters(text) #:nodoc:
112
114
  curr_element.add_child(text)
113
115
  end
114
116
 
115
- def tag_end(name) #:nodoc:
117
+ def end_element(name) #:nodoc:
116
118
  obj = curr_element
117
119
 
118
120
  if @listener.respond_to?("el_"+name)
@@ -120,8 +122,10 @@ module XMLCodec
120
122
  end
121
123
 
122
124
  if not obj.consumed
123
- if prev_element
124
- prev_element.add_child(obj.get_object)
125
+ real_obj = obj.get_object
126
+
127
+ if prev_element && real_obj
128
+ prev_element.add_child(real_obj)
125
129
  end
126
130
 
127
131
  @top_element = obj
@@ -130,9 +134,5 @@ module XMLCodec
130
134
  @elements.pop
131
135
  @currel -= 1
132
136
  end
133
-
134
- # Ignore everything except tags and text for now
135
- def method_missing(methId, *args) #:nodoc:
136
- end
137
137
  end
138
138
  end
data/lib/stream_parser.rb CHANGED
@@ -55,7 +55,7 @@ module XMLUtils
55
55
  end
56
56
  end
57
57
 
58
- class XMLStreamParser
58
+ class XMLStreamParser < Nokogiri::XML::SAX::Document
59
59
  attr_reader :contents
60
60
 
61
61
  def initialize(listener=nil)
@@ -72,20 +72,21 @@ module XMLUtils
72
72
  end
73
73
 
74
74
  def parse(text)
75
- REXML::Document.parse_stream(text, self)
75
+ parser = Nokogiri::XML::SAX::Parser.new(self)
76
+ parser.parse(text)
76
77
  end
77
78
 
78
- def tag_start(name, attrs)
79
+ def start_element(name, attrs)
79
80
  @elements << XMLSParserElement.new(name, @contents.size,
80
81
  self, @elements[-1])
81
- @contents << XMLUtils.create_open_tag(name, attrs)
82
+ @contents << XMLCodec::XMLUtils.create_open_tag(name, attrs)
82
83
  end
83
84
 
84
- def text(text)
85
- @contents << XMLUtils.escape_xml(text)
85
+ def characters(text)
86
+ @contents << XMLCodec::XMLUtils.escape_xml(text)
86
87
  end
87
88
 
88
- def tag_end(name)
89
+ def end_element(name)
89
90
  @contents << "</"+name+">"
90
91
  if @listener.respond_to? 'el_'+name
91
92
  @listener.send('el_'+name, @elements[-1])
@@ -100,9 +101,5 @@ module XMLUtils
100
101
  def consume
101
102
  @contents.erase_from(@elements[-1].elstart)
102
103
  end
103
-
104
- # Ignore everything except tags and text for now
105
- def method_missing(methId, *args)
106
- end
107
104
  end
108
105
  end
data/lib/subelements.rb CHANGED
@@ -7,7 +7,7 @@ module XMLCodec
7
7
 
8
8
  # Create a new element for the given string.
9
9
  def initialize(string)
10
- @value = XMLUtils::escape_xml(string)
10
+ @value = XMLCodec::XMLUtils::escape_xml(string)
11
11
  end
12
12
 
13
13
  # Simple to_s method that just returns the included string
@@ -17,7 +17,7 @@ module XMLCodec
17
17
 
18
18
  # Creates the XML for the element by using add_text on the value.
19
19
  def create_xml(parent)
20
- parent.add_text(@value)
20
+ parent << Nokogiri::XML::Text.new(@value, parent)
21
21
  end
22
22
 
23
23
  # The XML text of the element is simply it's string value.
data/lib/xmlcodec.rb CHANGED
@@ -1,3 +1,9 @@
1
+ require 'nokogiri'
2
+
3
+ module XMLCodec
4
+ VERSION = '0.3.0'
5
+ end
6
+
1
7
  require File.dirname(__FILE__) + '/XMLUtils'
2
8
  require File.dirname(__FILE__) + '/element'
3
9
  require File.dirname(__FILE__) + '/subelements'
data/test/element_test.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require File.dirname(__FILE__) + '/test_helper'
2
- require 'rexml/document'
2
+ require 'nokogiri'
3
3
 
4
4
  class TestXMLElement < Test::Unit::TestCase
5
5
  def test_xmlsubel
@@ -16,15 +16,15 @@ class TestXMLElement < Test::Unit::TestCase
16
16
  assert_equal('<abc>'+value+'</abc>', sel.xml_text)
17
17
  assert_equal('<subel><abc>'+value+'</abc></subel>', el.xml_text)
18
18
 
19
- dom = REXML::Document.new
19
+ dom = Nokogiri::XML::Document.new
20
20
  el.create_xml(dom)
21
21
 
22
22
  assert_equal 1, dom.elements.size
23
- eldom = dom.elements['subel']
23
+ eldom = dom.search('subel')
24
24
  assert_not_nil eldom
25
- assert_equal 1, eldom.elements.size
25
+ assert_equal 1, eldom.size
26
26
 
27
- seldom = eldom.elements['abc']
27
+ seldom = eldom.search('abc')
28
28
  assert_not_nil seldom
29
29
  assert_equal value, seldom.text
30
30
 
@@ -37,20 +37,22 @@ class TestXMLElement < Test::Unit::TestCase
37
37
  el = TestElement.new
38
38
 
39
39
  el.someattr = value
40
+ el.anotherattr = value
40
41
  assert_equal(value, el.someattr)
41
42
 
42
- assert_equal("<subel someattr='"+value+"'></subel>", el.xml_text)
43
+ assert_equal("<subel someattr='#{value}' anotherattr='#{value}'></subel>", el.xml_text)
43
44
 
44
- dom = REXML::Document.new
45
+ dom = Nokogiri::XML::Document.new
45
46
  el.create_xml(dom)
46
47
 
47
48
  assert_equal 1, dom.elements.size
48
- eldom = dom.elements['subel']
49
+ eldom = dom.search('subel')
49
50
  assert_not_nil eldom
50
- assert_equal value, eldom.attributes['someattr']
51
+ assert_equal value, eldom[0].get_attribute('someattr')
51
52
 
52
53
  el = TestElement.import_xml(dom)
53
54
  assert_equal value, el.someattr
55
+ assert_equal value, el.anotherattr
54
56
  end
55
57
 
56
58
  def test_xmlsubelements
@@ -64,15 +66,15 @@ class TestXMLElement < Test::Unit::TestCase
64
66
 
65
67
  assert_equal('<subels><abc>'+value+'</abc></subels>', el.xml_text)
66
68
 
67
- dom = REXML::Document.new
69
+ dom = Nokogiri::XML::Document.new
68
70
  el.create_xml(dom)
69
71
 
70
72
  assert_equal 1, dom.elements.size
71
- eldom = dom.elements['subels']
73
+ eldom = dom.search('subels')
72
74
  assert_not_nil eldom
73
- assert_equal 1, eldom.elements.size
75
+ assert_equal 1, eldom.size
74
76
 
75
- seldom = eldom.elements['abc']
77
+ seldom = eldom.search('abc')
76
78
  assert_not_nil seldom
77
79
  assert_equal value, seldom.text
78
80
 
@@ -141,16 +143,16 @@ class TestXMLElement < Test::Unit::TestCase
141
143
 
142
144
  assert_equal('<mult><abc>'+value1+'</abc><abc>'+value2+'</abc></mult>', el.xml_text)
143
145
 
144
- dom = REXML::Document.new
146
+ dom = Nokogiri::XML::Document.new
145
147
  el.create_xml(dom)
146
148
 
147
149
  assert_equal 1, dom.elements.size
148
- eldom = dom.elements['mult']
150
+ eldom = dom.search('abc')
149
151
  assert_not_nil eldom
150
- assert_equal 2, eldom.elements.size
152
+ assert_equal 2, eldom.size
151
153
 
152
154
  [value1, value2].each_with_index do |value, index|
153
- seldom = eldom.elements[index+1]
155
+ seldom = eldom[index]
154
156
  assert_not_nil seldom
155
157
  assert_equal value, seldom.text
156
158
  assert_equal 'abc', seldom.name
@@ -240,7 +242,7 @@ class TestXMLElement < Test::Unit::TestCase
240
242
  assert_equal SimpleElement, BaseFormat.get_element_class('abc')
241
243
  assert_equal SimpleElement, BaseFormat.get_element_class(:abc)
242
244
  assert_raise ElementClassNotFound do
243
- BaseFormat.get_element_class(:nosuchclass)
245
+ StrictBaseFormat.get_element_class(:nosuchclass)
244
246
  end
245
247
  end
246
248
 
@@ -41,7 +41,7 @@ class TestMultiFormat < Test::Unit::TestCase
41
41
  def test_import_first
42
42
  value = 'somevalue'
43
43
  text = '<root><child value="'+value+'"></child></root>'
44
- root = FirstFormat.import_xml_text(text)
44
+ root = FirstFormat.import_xml(text)
45
45
  assert_kind_of(FirstRoot, root)
46
46
  assert_kind_of(FirstChild, root.child)
47
47
  assert_equal value, root.child.value
@@ -50,7 +50,7 @@ class TestMultiFormat < Test::Unit::TestCase
50
50
  def test_import_second
51
51
  value = 'somevalue'
52
52
  text = '<root><child>'+value+'</child></root>'
53
- root = SecondFormat.import_xml_text(text)
53
+ root = SecondFormat.import_xml(text)
54
54
  assert_kind_of(SecondRoot, root)
55
55
  assert_kind_of(SecondChild, root.child)
56
56
  assert_equal value, root.child.value
@@ -59,7 +59,7 @@ class TestMultiFormat < Test::Unit::TestCase
59
59
  def test_double_inheritance
60
60
  value = 'somevalue'
61
61
  text = '<root><child2 value2="'+value+'">'+value+'</child2></root>'
62
- root = SecondFormat.import_xml_text(text)
62
+ root = SecondFormat.import_xml(text)
63
63
  assert_kind_of(SecondRoot, root)
64
64
  assert_kind_of(SecondChild2, root.child2)
65
65
  assert_equal value, root.child2.value
@@ -0,0 +1,38 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+ require 'nokogiri'
3
+
4
+ class PartialBaseFormat < XMLElement
5
+ xmlformat 'Base Format'
6
+ end
7
+
8
+ class PartialSimpleElement < PartialBaseFormat
9
+ elwithvalue
10
+ elname 'abc'
11
+ xmlattr :myattr
12
+ end
13
+
14
+ class TestPartialImport < Test::Unit::TestCase
15
+ def test_partial_elements_in_text
16
+ sel = PartialBaseFormat.import_xml "<abc><otherel></otherel>text</abc>"
17
+ assert_equal "text", sel.value
18
+ end
19
+
20
+ def test_partial_elements_in_dom
21
+ xml_text = "<abc><otherel></otherel>text</abc>"
22
+ sel = PartialBaseFormat.import_xml Nokogiri::XML::Document.parse(xml_text)
23
+ assert_equal "text", sel.value
24
+ end
25
+
26
+ def test_partial_attributes_in_text
27
+ sel = PartialBaseFormat.import_xml "<abc myattr='real' someattr='xpto'>text</abc>"
28
+ assert_equal "text", sel.value
29
+ assert_equal "real", sel.myattr
30
+ end
31
+
32
+ def test_partial_attributes_in_dom
33
+ xml_text = "<abc myattr='real' someattr='xpto'>text</abc>"
34
+ sel = PartialBaseFormat.import_xml Nokogiri::XML::Document.parse(xml_text)
35
+ assert_equal "text", sel.value
36
+ assert_equal "real", sel.myattr
37
+ end
38
+ end
@@ -1,5 +1,10 @@
1
1
  include XMLCodec
2
2
 
3
+ class StrictBaseFormat < XMLElement
4
+ xmlformat 'Base Format'
5
+ xml_strict_parsing
6
+ end
7
+
3
8
  class BaseFormat < XMLElement
4
9
  xmlformat 'Base Format'
5
10
  end
@@ -36,6 +41,7 @@ class TestElement < BaseFormat
36
41
  xmlsubel :abc2
37
42
  xmlsubel :subel
38
43
  xmlattr :someattr
44
+ xmlattr 'anotherattr'
39
45
  end
40
46
 
41
47
  class SubelElement < BaseFormat
@@ -24,10 +24,20 @@ class TestXMLTextElement < Test::Unit::TestCase
24
24
  end
25
25
 
26
26
  def test_create_xml
27
- xmlel = REXML::Element.new 'abc'
27
+ xmlel = Nokogiri::XML::Element.new('abc',Nokogiri::XML::Document.new)
28
28
  value = 'Some Value'
29
29
  el = XMLTextElement.new value
30
30
  el.create_xml(xmlel)
31
31
  assert_equal '<abc>'+value+'</abc>', xmlel.to_s
32
32
  end
33
+ def test_create_xml_multiple
34
+ xmlel = Nokogiri::XML::Element.new('abc',Nokogiri::XML::Document.new)
35
+ value1 = 'Some Value'
36
+ el1 = XMLTextElement.new value1
37
+ value2 = 'Some Other Value'
38
+ el2 = XMLTextElement.new value2
39
+ el1.create_xml(xmlel)
40
+ el2.create_xml(xmlel)
41
+ assert_equal '<abc>'+value1+value2+'</abc>', xmlel.to_s
42
+ end
33
43
  end
data/test/test_helper.rb CHANGED
@@ -1,3 +1,6 @@
1
+ require 'simplecov'
2
+ SimpleCov.start
3
+
1
4
  require 'test/unit'
2
5
  require 'tmpdir'
3
6
  require File.dirname(__FILE__) + '/../lib/xmlcodec'
@@ -22,6 +25,6 @@ class Test::Unit::TestCase
22
25
  end
23
26
 
24
27
  def compare_xpath(value, path)
25
- assert_equal(value.strip, XMLUtils::select_path(path, @temp_path).strip)
28
+ assert_equal(value.strip, XMLCodec::XMLUtils::select_path(path, @temp_path).strip)
26
29
  end
27
30
  end
data/test/utils_test.rb CHANGED
@@ -3,48 +3,15 @@ require 'tmpdir'
3
3
 
4
4
  class TestXMLUtils < Test::Unit::TestCase
5
5
  def test_create_open_tag
6
- tag = XMLUtils::create_open_tag("name", {"arg1" => "val1", "arg2" => "val2"})
6
+ tag = XMLCodec::XMLUtils::create_open_tag("name", {"arg1" => "val1", "arg2" => "val2"})
7
7
  assert_equal("<name arg1='val1' arg2='val2'>", tag)
8
8
  end
9
9
 
10
10
  def test_escape_xml
11
- assert_equal '&lt; abc', XMLUtils::escape_xml('< abc')
12
- assert_equal '&gt; abc', XMLUtils::escape_xml('> abc')
13
- assert_equal '&amp; abc', XMLUtils::escape_xml('& abc')
14
- assert_equal 'abc', XMLUtils::escape_xml('abc')
15
- end
16
-
17
- def test_get_xpath
18
- opts = {}
19
- assert_xpath_equal('abc', '//xpto', '<xpto>abc</xpto>')
20
-
21
- assert_xpath_equal('abc', '//xpto', '<xpto>abc<xpto2>foo</xpto2></xpto>')
22
-
23
- opts[:with_attrs] = true
24
- opts[:recursive] = false
25
- opts[:multiple] = false
26
- assert_xpath_equal('attr1 abc', '//xpto', '<xpto attr1="attr1">abc<xpto2>foo</xpto2></xpto>', opts)
27
-
28
- opts[:with_attrs] = false
29
- opts[:recursive] = true
30
- opts[:multiple] = false
31
- assert_xpath_equal('abc foo', '//xpto', '<xpto>abc<xpto2 attr1="attr1">foo</xpto2></xpto>', opts)
32
-
33
- opts[:with_attrs] = true
34
- opts[:recursive] = true
35
- opts[:multiple] = false
36
- assert_xpath_equal('abc attr1 foo', '//xpto', '<xpto>abc<xpto2 attr1="attr1">foo</xpto2></xpto>', opts)
37
-
38
- opts[:with_attrs] = false
39
- opts[:recursive] = false
40
- opts[:multiple] = true
41
- assert_xpath_equal('abc foo', '//xpto', '<xpto>abc<xpto attr1="attr1">foo</xpto></xpto>', opts)
42
- end
43
-
44
- def assert_xpath_equal(result, path, xml, opts={})
45
- assert_equal result, XMLUtils::get_xpath(path, xml, opts)
46
- assert_equal result, XMLUtils::get_xpath(path, StringIO.new(xml), opts)
47
- assert_equal result, XMLUtils::get_xpath(path, REXML::Document.new(xml), opts)
11
+ assert_equal '&lt; abc', XMLCodec::XMLUtils::escape_xml('< abc')
12
+ assert_equal '&gt; abc', XMLCodec::XMLUtils::escape_xml('> abc')
13
+ assert_equal '&amp; abc', XMLCodec::XMLUtils::escape_xml('& abc')
14
+ assert_equal 'abc', XMLCodec::XMLUtils::escape_xml('abc')
48
15
  end
49
16
 
50
17
  def test_count_elements
@@ -53,7 +20,7 @@ class TestXMLUtils < Test::Unit::TestCase
53
20
  f = File.open(filename, 'w')
54
21
  f << text
55
22
  f.close
56
- assert_equal 2, XMLUtils::count_elements('//abc', filename)
23
+ assert_equal 2, XMLCodec::XMLUtils::count_elements('//abc', filename)
57
24
  end
58
25
 
59
26
  def test_element_exists
@@ -62,6 +29,6 @@ class TestXMLUtils < Test::Unit::TestCase
62
29
  f = File.open(filename, 'w')
63
30
  f << text
64
31
  f.close
65
- assert XMLUtils::element_exists('//abc', filename)
32
+ assert XMLCodec::XMLUtils::element_exists('//abc', filename)
66
33
  end
67
34
  end
data/xmlcodec.gemspec ADDED
@@ -0,0 +1,57 @@
1
+ Gem::Specification.new do |s|
2
+ s.specification_version = 2 if s.respond_to? :specification_version=
3
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
4
+ s.rubygems_version = '1.3.5'
5
+
6
+ s.platform = Gem::Platform::RUBY
7
+
8
+ s.name = 'xmlcodec'
9
+ s.version = '0.3.0'
10
+ s.date = '2013-08-30'
11
+
12
+ s.summary = "Generic Importer/Exporter of XML formats"
13
+ s.description = <<EOF
14
+ A framework to write object to XML mappers in Ruby that can then function both in whole-document manipulation as well as constant memory unlimited size importing and exporting of XML.
15
+ EOF
16
+
17
+ s.authors = ["Pedro Côrte-Real"]
18
+ s.email = 'pedro@pedrocr.net'
19
+ s.homepage = 'https://github.com/pedrocr/xmlcodec'
20
+
21
+ s.require_paths = %w[lib]
22
+
23
+ s.has_rdoc = true
24
+ s.rdoc_options = ['-S', '-w 2', '-N', '-c utf8']
25
+ s.extra_rdoc_files = %w[README.rdoc LICENSE]
26
+
27
+ s.executables = Dir.glob("bin/*").map{|f| f.gsub('bin/','')}
28
+
29
+ s.add_dependency('nokogiri')
30
+
31
+ # = MANIFEST =
32
+ s.files = %w[
33
+ LICENSE
34
+ README.rdoc
35
+ Rakefile
36
+ lib/XMLUtils.rb
37
+ lib/element.rb
38
+ lib/stream_object_parser.rb
39
+ lib/stream_parser.rb
40
+ lib/subelements.rb
41
+ lib/xmlcodec.rb
42
+ test/element_test.rb
43
+ test/multi_format_test.rb
44
+ test/partial_export_test.rb
45
+ test/partial_import_test.rb
46
+ test/simple_objects.rb
47
+ test/stream_object_parser_test.rb
48
+ test/stream_parser_test.rb
49
+ test/subelements_test.rb
50
+ test/test_helper.rb
51
+ test/utils_test.rb
52
+ xmlcodec.gemspec
53
+ ]
54
+ # = MANIFEST =
55
+
56
+ s.test_files = s.files.select { |path| path =~ /^test\/.*\.rb/ }
57
+ end
metadata CHANGED
@@ -1,88 +1,95 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: xmlcodec
3
- version: !ruby/object:Gem::Version
4
- hash: 29
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 1
9
- - 3
10
- version: 0.1.3
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
13
- - "Pedro C\xC3\xB4rte-Real"
7
+ authors:
8
+ - Pedro Côrte-Real
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
12
+ date: 2013-08-30 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: nokogiri
16
+ requirement: &79189020 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *79189020
25
+ description: ! 'A framework to write object to XML mappers in Ruby that can then function
26
+ both in whole-document manipulation as well as constant memory unlimited size importing
27
+ and exporting of XML.
17
28
 
18
- date: 2010-09-14 00:00:00 +01:00
19
- default_executable:
20
- dependencies: []
21
-
22
- description: |
23
- A library that eases the creation of XML importers and exporters for ruby.
24
-
29
+ '
25
30
  email: pedro@pedrocr.net
26
31
  executables: []
27
-
28
32
  extensions: []
29
-
30
- extra_rdoc_files:
33
+ extra_rdoc_files:
31
34
  - README.rdoc
32
- files:
33
- - test/partial_export_test.rb
34
- - test/subelements_test.rb
35
- - test/utils_test.rb
36
- - test/test_helper.rb
37
- - test/multi_format_test.rb
38
- - test/stream_parser_test.rb
39
- - test/element_test.rb
40
- - test/simple_objects.rb
41
- - test/stream_object_parser_test.rb
42
- - lib/element.rb
43
- - lib/subelements.rb
35
+ - LICENSE
36
+ files:
37
+ - LICENSE
38
+ - README.rdoc
39
+ - Rakefile
44
40
  - lib/XMLUtils.rb
45
- - lib/xmlcodec.rb
41
+ - lib/element.rb
46
42
  - lib/stream_object_parser.rb
47
43
  - lib/stream_parser.rb
48
- - README.rdoc
49
- - LICENSE
50
- - Rakefile
51
- has_rdoc: true
52
- homepage: http://github.com/pedrocr/xmlcodec
44
+ - lib/subelements.rb
45
+ - lib/xmlcodec.rb
46
+ - test/element_test.rb
47
+ - test/multi_format_test.rb
48
+ - test/partial_export_test.rb
49
+ - test/partial_import_test.rb
50
+ - test/simple_objects.rb
51
+ - test/stream_object_parser_test.rb
52
+ - test/stream_parser_test.rb
53
+ - test/subelements_test.rb
54
+ - test/test_helper.rb
55
+ - test/utils_test.rb
56
+ - xmlcodec.gemspec
57
+ homepage: https://github.com/pedrocr/xmlcodec
53
58
  licenses: []
54
-
55
59
  post_install_message:
56
- rdoc_options:
60
+ rdoc_options:
57
61
  - -S
58
62
  - -w 2
59
63
  - -N
60
- require_paths:
64
+ - -c utf8
65
+ require_paths:
61
66
  - lib
62
- required_ruby_version: !ruby/object:Gem::Requirement
67
+ required_ruby_version: !ruby/object:Gem::Requirement
63
68
  none: false
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- hash: 3
68
- segments:
69
- - 0
70
- version: "0"
71
- required_rubygems_version: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ! '>='
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ required_rubygems_version: !ruby/object:Gem::Requirement
72
74
  none: false
73
- requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- hash: 3
77
- segments:
78
- - 0
79
- version: "0"
80
- requirements:
81
- - none
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ requirements: []
82
80
  rubyforge_project:
83
- rubygems_version: 1.3.7
81
+ rubygems_version: 1.8.11
84
82
  signing_key:
85
- specification_version: 3
83
+ specification_version: 2
86
84
  summary: Generic Importer/Exporter of XML formats
87
- test_files: []
88
-
85
+ test_files:
86
+ - test/element_test.rb
87
+ - test/multi_format_test.rb
88
+ - test/partial_export_test.rb
89
+ - test/partial_import_test.rb
90
+ - test/simple_objects.rb
91
+ - test/stream_object_parser_test.rb
92
+ - test/stream_parser_test.rb
93
+ - test/subelements_test.rb
94
+ - test/test_helper.rb
95
+ - test/utils_test.rb