rexslt 0.1.1 → 0.1.2

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/rexslt.rb +14 -10
  2. metadata +1 -1
data/lib/rexslt.rb CHANGED
@@ -1,7 +1,3 @@
1
- #!/usr/bin/env ruby
2
-
3
- # file: rexslt.rb
4
-
5
1
  require 'rexml/document'
6
2
 
7
3
  class Rexslt
@@ -12,6 +8,8 @@ class Rexslt
12
8
  doc_xml = Document.new(xml)
13
9
  doc_xsl = Document.new(xsl)
14
10
 
11
+ @xsl_methods = [:apply_templates, :value_of]
12
+
15
13
  # fetch the templates
16
14
  @templates = XPath.match(doc_xsl.root, 'xsl:template').inject({}) do |r,x|
17
15
  r.merge(x.attribute('match').value => x)
@@ -24,9 +22,9 @@ class Rexslt
24
22
 
25
23
  end
26
24
 
27
- def to_s()
28
- @a.flatten.join
29
- end
25
+ def to_s() @a.flatten.join end
26
+
27
+ def to_a() @a end
30
28
 
31
29
  alias text to_s
32
30
 
@@ -34,10 +32,16 @@ class Rexslt
34
32
 
35
33
  def read_template(template_node, doc_node)
36
34
 
37
- XPath.match(template_node, '*').map do |x|
35
+ XPath.match(template_node, '*').map do |x|
36
+
38
37
  method_name = x.name.gsub(/-/,'_').to_sym
39
- field = x.attribute('select').value.to_s
40
- method(method_name).call(doc_node, field)
38
+
39
+ if @xsl_methods.include? method_name then
40
+ field = x.attribute('select').value.to_s if x.attribute('select')
41
+ method(method_name).call(doc_node, field)
42
+ else
43
+ x.to_s
44
+ end
41
45
  end
42
46
  end
43
47
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: rexslt
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.1
5
+ version: 0.1.2
6
6
  platform: ruby
7
7
  authors: []
8
8