kind_dom 0.9.5 → 0.9.6

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/lib/kind_dom/base.rb CHANGED
@@ -35,11 +35,19 @@ module KindDom
35
35
 
36
36
  attr_accessor :dom
37
37
 
38
- def initialize(raw_xml=nil)
39
- unless raw_xml.blank?
40
- parser = XML::Parser.new
41
- parser.string = raw_xml
42
- @dom = parser.parse
38
+ # A new KindDom object may be created from raw XML [string] data, or
39
+ # an already instantiated XML::Node or XML::Document.
40
+ #
41
+ def initialize(xml_in=nil)
42
+ unless xml_in.blank?
43
+ case
44
+ when xml_in.kind_of?(String)
45
+ parser = XML::Parser.new
46
+ parser.string = xml_in
47
+ @dom = parser.parse
48
+ when xml_in.kind_of?(XML::Document), xml_in.kind_of?(XML::Node)
49
+ @dom = xml_in
50
+ end
43
51
  end
44
52
  rescue XML::Parser::ParseError
45
53
  ensure
@@ -5,8 +5,23 @@ class KindDomTest < Test::Unit::TestCase
5
5
 
6
6
  @@test_dom = KindDom::Base.new(File.read(File.dirname(__FILE__) + '/flickr_rss.xml'))
7
7
 
8
- def test_dom_initialization
8
+ def test_initialization_from_raw_xml
9
9
  assert_kind_of XML::Document, @@test_dom
10
+ assert @@test_dom.respond_to?(:content_for)
11
+ end
12
+
13
+ def test_initialization_from_xml_document
14
+ parsed = parse_xml File.read(File.dirname(__FILE__) + '/flickr_rss.xml')
15
+ k = KindDom::Base.new(parsed)
16
+ assert_kind_of XML::Document, k
17
+ assert k.respond_to?(:content_for)
18
+ end
19
+
20
+ def test_initialization_from_xml_node
21
+ parsed = parse_xml File.read(File.dirname(__FILE__) + '/flickr_rss.xml')
22
+ k = KindDom::Base.new(parsed.root.find_first('channel/item'))
23
+ assert_kind_of XML::Node, k
24
+ assert k.respond_to?(:content_for)
10
25
  end
11
26
 
12
27
 
@@ -87,4 +102,12 @@ class KindDomTest < Test::Unit::TestCase
87
102
  end
88
103
 
89
104
 
105
+ private
106
+
107
+ def parse_xml(data)
108
+ parser = XML::Parser.new
109
+ parser.string = data
110
+ parser.parse
111
+ end
112
+
90
113
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kind_dom
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.5
4
+ version: 0.9.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mars Hall
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-04-07 00:00:00 -07:00
12
+ date: 2008-07-02 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency