kind_dom 0.9.5 → 0.9.6

Sign up to get free protection for your applications and to get access to all the features.
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