dreamcat4-libxml-ruby-dc4 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/VERSION.yml +2 -2
  2. data/lib/libxml_ruby_dc4.rb +88 -0
  3. metadata +1 -1
@@ -1,4 +1,4 @@
1
1
  ---
2
- :minor: 0
3
- :patch: 2
2
+ :minor: 1
3
+ :patch: 0
4
4
  :major: 0
@@ -0,0 +1,88 @@
1
+ require "xml/libxml"
2
+ class XML::Node
3
+ ##
4
+ # Open up XML::Node from libxml and add convenience methods inspired
5
+ # by hpricot.
6
+ # (http://code.whytheluckystiff.net/hpricot/wiki/HpricotBasics)
7
+ # Also:
8
+ # * provide better handling of default namespaces
9
+ # an array of default namespaces to past into
10
+ attr_accessor :default_namespaces
11
+ # find the child node with the given xpath
12
+ def at(xpath)
13
+ self.find_first(xpath)
14
+ end
15
+
16
+ # find the array of child nodes matching the given xpath
17
+ def search(xpath)
18
+ results = self.find(xpath).to_a
19
+ if block_given?
20
+ results.each do |result|
21
+ yield result
22
+ end
23
+ end
24
+ return results
25
+ end
26
+
27
+ # alias for search
28
+ def /(xpath)
29
+ search(xpath)
30
+ end
31
+ # return the inner contents of this node as a string
32
+ def inner_xml
33
+ child.to_s
34
+ end
35
+
36
+ # alias for inner_xml
37
+ def inner_html
38
+ inner_xml
39
+ end
40
+
41
+ # return this node and its contents as an xml string
42
+ def to_xml
43
+ self.to_s
44
+ end
45
+
46
+ # alias for path
47
+ def xpath
48
+ self.path
49
+ end
50
+
51
+ # provide a name for the default namespace
52
+ def register_default_namespace(name)
53
+ self.namespace.each do |n|
54
+ if n.to_s == nil
55
+ register_namespace("#{name}:#{n.href}")
56
+ return
57
+ end
58
+ end
59
+ raise "No default namespace found"
60
+ end
61
+
62
+ # register a namespace, of the form "foo:http://example.com/ns"
63
+ def register_namespace(name_and_href)
64
+ (@default_namespaces ||= []) <<name_and_href
65
+ end
66
+
67
+ def find_with_default_ns(xpath_expr, namespace=nil)
68
+ find_base(xpath_expr, namespace || default_namespaces)
69
+ end
70
+
71
+ def find_first_with_default_ns(xpath_expr, namespace=nil)
72
+ find_first_base(xpath_expr, namespace || default_namespaces)
73
+ end
74
+
75
+ alias_method :find_base, :find unless method_defined?(:find_base)
76
+ alias_method :find, :find_with_default_ns
77
+ alias_method :find_first_base, :find_first unless method_defined?(:find_first_base)
78
+ alias_method :find_first, :find_first_with_default_ns
79
+
80
+ end
81
+
82
+ class String
83
+ def to_libxml_doc
84
+ xp = XML::Parser.new
85
+ xp.string = self
86
+ return xp.parse
87
+ end
88
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dreamcat4-libxml-ruby-dc4
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - dreamcat4