backtrack-xpath 0.1.0

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.
Files changed (2) hide show
  1. data/lib/backtrack-xpath.rb +33 -0
  2. metadata +55 -0
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/ruby
2
+
3
+ # file: backtrack-xpath.rb
4
+
5
+ class BacktrackXPath
6
+
7
+ def initialize(node)
8
+ @xpath = doc_scan(node).flatten.compact.join('/')
9
+ end
10
+
11
+ def to_s
12
+ @xpath
13
+ end
14
+
15
+ private
16
+
17
+ def attribute_scan(node)
18
+ result = ''
19
+ attr = %w(id class).detect {|x| node.attributes.has_key? x}
20
+ if attr then
21
+ value = node.attribute(attr).value
22
+ result = "[@%s='%s']" % [attr, value]
23
+ end
24
+ result
25
+ end
26
+
27
+ def doc_scan(node)
28
+ name = node.name
29
+ attribute = attribute_scan(node)
30
+ result = doc_scan(node.parent) if node.parent.name != node.root.name
31
+ [result, name.to_s + attribute]
32
+ end
33
+ end
metadata ADDED
@@ -0,0 +1,55 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: backtrack-xpath
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors: []
7
+
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-05-04 00:00:00 +01:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description:
17
+ email:
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files: []
23
+
24
+ files:
25
+ - lib/backtrack-xpath.rb
26
+ has_rdoc: true
27
+ homepage:
28
+ licenses: []
29
+
30
+ post_install_message:
31
+ rdoc_options: []
32
+
33
+ require_paths:
34
+ - lib
35
+ required_ruby_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: "0"
40
+ version:
41
+ required_rubygems_version: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: "0"
46
+ version:
47
+ requirements: []
48
+
49
+ rubyforge_project:
50
+ rubygems_version: 1.3.5
51
+ signing_key:
52
+ specification_version: 3
53
+ summary: backtrack-xpath accepts a REXML::Element and returns the full XPath back to the root.
54
+ test_files: []
55
+