aboutsummaryrefslogtreecommitdiffstats
path: root/lib/rexml/light/node.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rexml/light/node.rb')
-rw-r--r--lib/rexml/light/node.rb25
1 files changed, 12 insertions, 13 deletions
diff --git a/lib/rexml/light/node.rb b/lib/rexml/light/node.rb
index 5b7b95a7dc..680f2c23fe 100644
--- a/lib/rexml/light/node.rb
+++ b/lib/rexml/light/node.rb
@@ -42,7 +42,9 @@ module REXML
if node.kind_of? String
node = [ :text, node ]
elsif node.nil?
- node = [ :start_document, nil, nil ]
+ node = [ :document, nil, nil ]
+ elsif node[0] == :start_element
+ node[0] = :element
end
replace( node )
_old_put( 1, 0, 1 )
@@ -117,6 +119,10 @@ module REXML
end
end
+ def =~( path )
+ XPath.match( self, path )
+ end
+
# Doesn't handle namespaces yet
def []=( reference, ns, value=nil )
el!()
@@ -139,7 +145,7 @@ module REXML
# object. Otherwise, the element argument is a string, the namespace (if
# provided) is the namespace the element is created in.
def << element
- if text?
+ if node_type() == :text
at(-1) << element
else
newnode = Node.new( element )
@@ -150,7 +156,7 @@ module REXML
end
def node_type
- self[0]
+ _old_get(0)
end
def text=( foo )
@@ -163,10 +169,6 @@ module REXML
context = context.at(1) while context.at(1)
end
- def element?
- at(0) == :start_element
- end
-
def has_name?( name, namespace = '' )
el!()
at(3) == name and namespace() == namespace
@@ -181,19 +183,16 @@ module REXML
at(1)
end
- def text?
- at(0) == :text
- end
-
def to_s
end
def el!
- if text?()
- _old_put( 0, :start_element )
+ if node_type() != :element and node_type() != :document
+ _old_put( 0, :element )
push({})
end
+ self
end
private