objectify-xml 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +4 -0
- data/Rakefile +13 -1
- data/lib/objectify_xml.rb +2 -2
- data/spec/objectify_xml_spec.rb +29 -18
- data/spec/spec_helper.rb +1 -0
- metadata +9 -5
data/History.txt
CHANGED
data/Rakefile
CHANGED
@@ -3,13 +3,25 @@
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'hoe'
|
5
5
|
require './lib/objectify_xml.rb'
|
6
|
+
require 'spec/rake/spectask'
|
6
7
|
|
7
8
|
Hoe.new('objectify-xml', Objectify::Xml::VERSION) do |p|
|
8
9
|
p.rubyforge_name = 'objectify-xml' # if different than lowercase project name
|
9
10
|
p.developer('pangloss', 'darrick@innatesoftware.com')
|
10
11
|
p.extra_deps = %w[nokogiri activesupport]
|
11
|
-
|
12
|
+
p.testlib = 'spec'
|
13
|
+
p.test_globs = 'spec/**/*_spec.rb'
|
12
14
|
p.url = 'http://github.com/pangloss/objectify_xml'
|
15
|
+
p.remote_rdoc_dir = ''
|
13
16
|
end
|
14
17
|
|
18
|
+
desc "Run all specifications"
|
19
|
+
Spec::Rake::SpecTask.new(:spec) do |t|
|
20
|
+
t.libs = ['lib', 'spec']
|
21
|
+
t.spec_opts = ['--colour', '--format', 'specdoc']
|
22
|
+
end
|
23
|
+
|
24
|
+
Rake::Task[:default].clear
|
25
|
+
task :default => [:spec]
|
26
|
+
|
15
27
|
# vim: syntax=Ruby
|
data/lib/objectify_xml.rb
CHANGED
@@ -8,7 +8,7 @@ require File.join(File.dirname(__FILE__), 'objectify_xml/element_parser')
|
|
8
8
|
|
9
9
|
module Objectify
|
10
10
|
class Xml
|
11
|
-
VERSION = '0.2.
|
11
|
+
VERSION = '0.2.1'
|
12
12
|
|
13
13
|
# When child nodes are created, they are given the name of the node
|
14
14
|
# that created them which is available here.
|
@@ -31,7 +31,7 @@ module Objectify
|
|
31
31
|
end
|
32
32
|
# skip the <?xml?> tag
|
33
33
|
xml = xml.child if xml.class == Nokogiri::XML::Document
|
34
|
-
while xml.class
|
34
|
+
while xml and xml.class != Nokogiri::XML::Element
|
35
35
|
# skips past things like xml-stylesheet declarations.
|
36
36
|
xml = xml.next
|
37
37
|
end
|
data/spec/objectify_xml_spec.rb
CHANGED
@@ -9,7 +9,35 @@ describe Objectify::Xml do
|
|
9
9
|
public :xml_text_to_value
|
10
10
|
end
|
11
11
|
|
12
|
+
describe 'first_element' do
|
13
|
+
it 'should return the first element, skipping processing instructions' do
|
14
|
+
xml_string = <<-exml
|
15
|
+
<?xml version="1.0"?>
|
16
|
+
<?xml-stylesheet type="text/css" href="http://en.wikipedia.org/skins-1.5/common/feed.css?206xx"?>
|
17
|
+
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"></feed>
|
18
|
+
exml
|
19
|
+
Xml.first_element(xml_string).name.should == 'feed'
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should handle nil xml' do
|
23
|
+
Xml.first_element(nil).should be_nil
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should handle blank xml' do
|
27
|
+
Xml.first_element('').should be_nil
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should return the first element of simple xml data' do
|
31
|
+
Xml.first_element('<foo><bar>no</bar></foo>').name.should == 'foo'
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
12
35
|
describe 'initialize' do
|
36
|
+
it 'should call first_element' do
|
37
|
+
Xml.expects(:first_element).with('the xml').returns(nil)
|
38
|
+
Xml.new('the xml')
|
39
|
+
end
|
40
|
+
|
13
41
|
describe 'with nil' do
|
14
42
|
it 'should handle nil string' do
|
15
43
|
Xml.new(nil) do |x|
|
@@ -26,24 +54,6 @@ describe Objectify::Xml do
|
|
26
54
|
end
|
27
55
|
end
|
28
56
|
|
29
|
-
describe 'with multiple nodes before the first element' do
|
30
|
-
it 'should call parse_xml with the first element' do
|
31
|
-
xml_string = <<-exml
|
32
|
-
<?xml version="1.0"?>
|
33
|
-
<?xml-stylesheet type="text/css" href="http://en.wikipedia.org/skins-1.5/common/feed.css?206xx"?>
|
34
|
-
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"></feed>
|
35
|
-
exml
|
36
|
-
xml = Nokogiri::XML(xml_string).child.next
|
37
|
-
x = Xml.new(xml_string) do |x|
|
38
|
-
def x.primary_xml_element(xml)
|
39
|
-
xml.name.should == 'feed'
|
40
|
-
@parent = :called
|
41
|
-
end
|
42
|
-
end
|
43
|
-
x.parent.should == :called
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
57
|
describe 'with ""' do
|
48
58
|
it 'should not call primary_xml_element' do
|
49
59
|
Xml.new('') do |x|
|
@@ -51,6 +61,7 @@ describe Objectify::Xml do
|
|
51
61
|
end
|
52
62
|
end
|
53
63
|
end
|
64
|
+
|
54
65
|
describe 'with valid xml' do
|
55
66
|
it 'should call primary_xml_element with a Nokogiri XML object' do
|
56
67
|
Xml.new('<foo><bar>no</bar></foo>') do |x|
|
data/spec/spec_helper.rb
CHANGED
@@ -3,6 +3,7 @@ require File.expand_path(File.join(File.dirname(__FILE__), '../lib/objectify_xml
|
|
3
3
|
require File.expand_path(File.join(File.dirname(__FILE__), '../lib/objectify_xml/atom'))
|
4
4
|
require 'spec'
|
5
5
|
require 'mocha'
|
6
|
+
require 'pp'
|
6
7
|
|
7
8
|
def sample_feed(name)
|
8
9
|
open(File.join(File.dirname(__FILE__), File.join('sample', name)))
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: objectify-xml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- pangloss
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-02
|
12
|
+
date: 2009-03-02 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -40,7 +40,7 @@ dependencies:
|
|
40
40
|
requirements:
|
41
41
|
- - ">="
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version: 1.
|
43
|
+
version: 1.9.0
|
44
44
|
version:
|
45
45
|
description: Provides an easy to use DSL resembling ActiveRecord for defining objects representing any XML document, including deeply nested ones. This project was extracted from my ruby-picasa gem. You can find ruby-picasa at http://github.com/pangloss/ruby_picasa or available as a gem. The project also has significant (if not complete) Atom support.
|
46
46
|
email:
|
@@ -97,5 +97,9 @@ rubygems_version: 1.3.1
|
|
97
97
|
signing_key:
|
98
98
|
specification_version: 2
|
99
99
|
summary: Provides an easy to use DSL resembling ActiveRecord for defining objects representing any XML document, including deeply nested ones
|
100
|
-
test_files:
|
101
|
-
|
100
|
+
test_files:
|
101
|
+
- spec/atom_spec.rb
|
102
|
+
- spec/document_parser_spec.rb
|
103
|
+
- spec/dsl_spec.rb
|
104
|
+
- spec/element_parser_spec.rb
|
105
|
+
- spec/objectify_xml_spec.rb
|