demolisher 0.5.0 → 0.5.1
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/VERSION +1 -1
- data/demolisher.gemspec +4 -4
- data/lib/demolisher.rb +14 -9
- metadata +11 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.1
|
data/demolisher.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{demolisher}
|
8
|
-
s.version = "0.5.
|
8
|
+
s.version = "0.5.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Geoff Garside"]
|
12
|
-
s.date = %q{2010-05-
|
12
|
+
s.date = %q{2010-05-26}
|
13
13
|
s.email = %q{geoff@geoffgarside.co.uk}
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"LICENSE",
|
@@ -33,7 +33,7 @@ Gem::Specification.new do |s|
|
|
33
33
|
s.rdoc_options = ["--charset=UTF-8"]
|
34
34
|
s.require_paths = ["lib"]
|
35
35
|
s.rubyforge_project = %q{demolisher}
|
36
|
-
s.rubygems_version = %q{1.3.
|
36
|
+
s.rubygems_version = %q{1.3.7}
|
37
37
|
s.summary = %q{Gem for extracting information from XML files, think Builder but backwards}
|
38
38
|
s.test_files = [
|
39
39
|
"test/demolisher_test.rb",
|
@@ -44,7 +44,7 @@ Gem::Specification.new do |s|
|
|
44
44
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
45
45
|
s.specification_version = 3
|
46
46
|
|
47
|
-
if Gem::Version.new(Gem::
|
47
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
48
48
|
s.add_runtime_dependency(%q<libxml-ruby>, [">= 1.1.3"])
|
49
49
|
else
|
50
50
|
s.add_dependency(%q<libxml-ruby>, [">= 1.1.3"])
|
data/lib/demolisher.rb
CHANGED
@@ -4,7 +4,8 @@ module Demolisher
|
|
4
4
|
# Demolish an XML file or XML::Parser object.
|
5
5
|
def self.demolish(file_or_xml_parser, namespace_list = nil)
|
6
6
|
file_or_xml_parser = new_parser(file_or_xml_parser) if file_or_xml_parser.kind_of?(String)
|
7
|
-
|
7
|
+
file_or_xml_parser = file_or_xml_parser.parse if file_or_xml_parser.kind_of?(XML::Parser)
|
8
|
+
node = Node.new(file_or_xml_parser, namespace_list, true)
|
8
9
|
|
9
10
|
yield node if block_given?
|
10
11
|
node
|
@@ -49,7 +50,7 @@ module Demolisher
|
|
49
50
|
# end
|
50
51
|
#
|
51
52
|
def [](attr_name)
|
52
|
-
|
53
|
+
_current_node.attributes[attr_name]
|
53
54
|
end
|
54
55
|
|
55
56
|
# The workhorse, finds the node matching meth.
|
@@ -63,7 +64,7 @@ module Demolisher
|
|
63
64
|
# looks like a boolean. Otherwise return text content
|
64
65
|
# Otherwise return a new Node instance
|
65
66
|
def method_missing(meth, *args, &block) # :nodoc:
|
66
|
-
xpath =
|
67
|
+
xpath = _xpath_for_element(meth.to_s, args.shift)
|
67
68
|
return nil if xpath.empty?
|
68
69
|
|
69
70
|
if block_given?
|
@@ -96,20 +97,24 @@ module Demolisher
|
|
96
97
|
|
97
98
|
# Returns the current nodes contents.
|
98
99
|
def to_s # :nodoc:
|
99
|
-
|
100
|
+
_current_node.content.strip
|
100
101
|
end
|
101
102
|
|
102
|
-
def
|
103
|
-
@nodes.last.
|
103
|
+
def _current_node
|
104
|
+
_is_root_node? ? @nodes.last.root : @nodes.last
|
105
|
+
end
|
106
|
+
|
107
|
+
def _xpath_for_element(el_or_ns, el_for_ns = nil)
|
108
|
+
_current_node.find(_element_from_symbol(el_or_ns, el_for_ns), @namespaces)
|
104
109
|
end
|
105
110
|
|
106
111
|
# Transforms a symbol into a XML element path.
|
107
|
-
def
|
108
|
-
"#{
|
112
|
+
def _element_from_symbol(el_or_ns,el_for_ns = nil) # :nodoc:
|
113
|
+
"#{_is_root_node? ? '/' : nil}#{el_or_ns.gsub(/[^a-z0-9_]/i, '')}#{el_for_ns && el_for_ns.inspect}"
|
109
114
|
end
|
110
115
|
|
111
116
|
# Indicates if the current node is the root of the XML document.
|
112
|
-
def
|
117
|
+
def _is_root_node?
|
113
118
|
@nodes.size == 1
|
114
119
|
end
|
115
120
|
end
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: demolisher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 9
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 5
|
8
|
-
-
|
9
|
-
version: 0.5.
|
9
|
+
- 1
|
10
|
+
version: 0.5.1
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Geoff Garside
|
@@ -14,16 +15,18 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-05-
|
18
|
+
date: 2010-05-26 00:00:00 +01:00
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
22
|
name: libxml-ruby
|
22
23
|
prerelease: false
|
23
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
24
26
|
requirements:
|
25
27
|
- - ">="
|
26
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 21
|
27
30
|
segments:
|
28
31
|
- 1
|
29
32
|
- 1
|
@@ -63,23 +66,27 @@ rdoc_options:
|
|
63
66
|
require_paths:
|
64
67
|
- lib
|
65
68
|
required_ruby_version: !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
66
70
|
requirements:
|
67
71
|
- - ">="
|
68
72
|
- !ruby/object:Gem::Version
|
73
|
+
hash: 3
|
69
74
|
segments:
|
70
75
|
- 0
|
71
76
|
version: "0"
|
72
77
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
78
|
+
none: false
|
73
79
|
requirements:
|
74
80
|
- - ">="
|
75
81
|
- !ruby/object:Gem::Version
|
82
|
+
hash: 3
|
76
83
|
segments:
|
77
84
|
- 0
|
78
85
|
version: "0"
|
79
86
|
requirements: []
|
80
87
|
|
81
88
|
rubyforge_project: demolisher
|
82
|
-
rubygems_version: 1.3.
|
89
|
+
rubygems_version: 1.3.7
|
83
90
|
signing_key:
|
84
91
|
specification_version: 3
|
85
92
|
summary: Gem for extracting information from XML files, think Builder but backwards
|