xml-smart 0.3.2.3 → 0.3.3
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/xml/smart.rb +20 -2
- data/lib/xml/smart_dom.rb +1 -1
- data/lib/xml/smart_domnamespaceset.rb +2 -1
- data/test/EXAMPLE.xml +1 -1
- data/test/tc_namespace_default.rb +5 -0
- data/test/tc_root.rb +22 -0
- data/xml-smart.gemspec +1 -1
- metadata +12 -10
data/lib/xml/smart.rb
CHANGED
@@ -26,6 +26,14 @@ module Nokogiri
|
|
26
26
|
self
|
27
27
|
end
|
28
28
|
|
29
|
+
def xpath_fast(path)
|
30
|
+
ns = self.custom_namespace_prefixes.merge(self.document.user_custom_namespace_prefixes)
|
31
|
+
ctx = XPathContext.new(self)
|
32
|
+
ctx.register_namespaces(self.document.custom_namespace_prefixes.merge(self.document.user_custom_namespace_prefixes))
|
33
|
+
path = path.gsub(/xmlns:/, ' :') unless Nokogiri.uses_libxml?
|
34
|
+
ctx.evaluate(path)
|
35
|
+
end
|
36
|
+
|
29
37
|
def custom_namespace_prefixes_update
|
30
38
|
result = {}
|
31
39
|
|
@@ -74,7 +82,17 @@ module Nokogiri
|
|
74
82
|
XPathContext.new(self).evaluate(path)
|
75
83
|
end
|
76
84
|
def xpath_fast(path)
|
77
|
-
return xpath(path,self.document.custom_namespace_prefixes.merge(self.document.user_custom_namespace_prefixes))
|
85
|
+
# return xpath(path,self.document.custom_namespace_prefixes.merge(self.document.user_custom_namespace_prefixes))
|
86
|
+
return NodeSet.new(document) unless document
|
87
|
+
|
88
|
+
ns = self.document.custom_namespace_prefixes.merge(self.document.user_custom_namespace_prefixes)
|
89
|
+
ctx = XPathContext.new(self)
|
90
|
+
ctx.register_namespaces(self.document.custom_namespace_prefixes.merge(self.document.user_custom_namespace_prefixes))
|
91
|
+
path = path.gsub(/xmlns:/, ' :') unless Nokogiri.uses_libxml?
|
92
|
+
ctx.evaluate(path)
|
93
|
+
end
|
94
|
+
|
95
|
+
def xpath_experimental
|
78
96
|
return NodeSet.new(document) unless document
|
79
97
|
@nsc ||= 0
|
80
98
|
if @nsc != self.document.ns_counter
|
@@ -90,7 +108,7 @@ module Nokogiri
|
|
90
108
|
end
|
91
109
|
|
92
110
|
module XML
|
93
|
-
VERSION = '0.3.
|
111
|
+
VERSION = '0.3.3'
|
94
112
|
LIBXML_VERSION = Nokogiri::VERSION_INFO['libxml']['loaded']
|
95
113
|
LOCKFILE = {
|
96
114
|
:min_sleep => 0.25,
|
data/lib/xml/smart_dom.rb
CHANGED
@@ -26,6 +26,7 @@ module XML
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
def []=(name,value)
|
29
|
+
name = nil if name == 'xmlns'
|
29
30
|
self.add(name,value)
|
30
31
|
end
|
31
32
|
|
@@ -37,7 +38,7 @@ module XML
|
|
37
38
|
nold.attributes.each do |attr|
|
38
39
|
nnew.attributes[attr.qname.name] = attr.value
|
39
40
|
end
|
40
|
-
ns = nnod.add_namespace_definition(name.to_s,value.to_s)
|
41
|
+
ns = nnod.add_namespace_definition(name.nil? ? nil : name.to_s,value.to_s)
|
41
42
|
@node.namespace_definitions.each do |ns|
|
42
43
|
nnod.add_namespace_definition(ns.prefix,ns.href)
|
43
44
|
end
|
data/test/EXAMPLE.xml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
<test xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xml:lang="de">
|
2
2
|
<names>
|
3
|
-
<name team="0" a="3">
|
3
|
+
<name team="0" a="3">2013-04-24 20:51:43 +0200</name>
|
4
4
|
<name team="1">Jürgen</name>
|
5
5
|
<name team="1">Michel</name>
|
6
6
|
<name team="1">Raphi</name>
|
@@ -50,9 +50,14 @@ class TestNamespaceDefault < MiniTest::Unit::TestCase
|
|
50
50
|
# add a namespace to the element
|
51
51
|
nsnode.namespaces.add("test","http://heise1")
|
52
52
|
nsnode.namespaces.add("aaa","http://heise2")
|
53
|
+
|
54
|
+
assert(nsnode.namespaces[nil] == nil)
|
55
|
+
|
53
56
|
nsnode.namespaces.add(nil,"http://heise")
|
54
57
|
nsnode.namespaces[nil] = "http://heiser"
|
55
58
|
|
59
|
+
assert(nsnode.namespaces[nil] != nil)
|
60
|
+
|
56
61
|
assert(nsnode.namespaces[nil].prefix == 'xmlns')
|
57
62
|
assert(nsnode.namespaces[nil].href == "http://heiser")
|
58
63
|
assert(nsnode.namespaces['xmlns'].href == "http://heiser")
|
data/test/tc_root.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'minitest/autorun'
|
3
|
+
require File.expand_path(::File.dirname(__FILE__) + '/../lib/xml/smart')
|
4
|
+
require File.expand_path(::File.dirname(__FILE__) + '/smartrunner.rb')
|
5
|
+
|
6
|
+
class TestBasic < MiniTest::Unit::TestCase
|
7
|
+
def test_criss_cross
|
8
|
+
doc = XML::Smart.open(::File.dirname(__FILE__) + "/EXAMPLE.xml")
|
9
|
+
|
10
|
+
node = doc.find("test")
|
11
|
+
assert(node.length == 1)
|
12
|
+
|
13
|
+
node = doc.root.find("test")
|
14
|
+
assert(node.length == 0)
|
15
|
+
|
16
|
+
node = doc.root.find("/test")
|
17
|
+
assert(node.length == 1)
|
18
|
+
|
19
|
+
node = node.first.find("names")
|
20
|
+
assert(node.length == 1)
|
21
|
+
end
|
22
|
+
end
|
data/xml-smart.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xml-smart
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-04-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|
16
|
-
requirement: &
|
16
|
+
requirement: &73897900 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *73897900
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: lockfile
|
27
|
-
requirement: &
|
27
|
+
requirement: &73897640 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *73897640
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: term-ansicolor
|
38
|
-
requirement: &
|
38
|
+
requirement: &73897430 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *73897430
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: minitest
|
49
|
-
requirement: &
|
49
|
+
requirement: &73897220 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *73897220
|
58
58
|
description: An xml library that doesn't suck (since 2004). Based on Nokogiri since
|
59
59
|
2012. For more info check out the Documentation link below.
|
60
60
|
email: juergen.mangler@gmail.com
|
@@ -98,6 +98,7 @@ files:
|
|
98
98
|
- test/tc_xsl.rb
|
99
99
|
- test/tc_create.rb
|
100
100
|
- test/tc_nested.rb
|
101
|
+
- test/tc_root.rb
|
101
102
|
- test/tc_xpath_root.rb
|
102
103
|
- test/tc_qname.rb
|
103
104
|
- test/tc_todoc.rb
|
@@ -167,6 +168,7 @@ test_files:
|
|
167
168
|
- test/tc_xsl.rb
|
168
169
|
- test/tc_create.rb
|
169
170
|
- test/tc_nested.rb
|
171
|
+
- test/tc_root.rb
|
170
172
|
- test/tc_xpath_root.rb
|
171
173
|
- test/tc_qname.rb
|
172
174
|
- test/tc_todoc.rb
|