rexslt 0.3.6 → 0.3.7
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/rexslt.rb +31 -7
- metadata +2 -2
data/lib/rexslt.rb
CHANGED
@@ -32,9 +32,10 @@ end
|
|
32
32
|
|
33
33
|
class Rexslt
|
34
34
|
|
35
|
-
def initialize(xsl, xml)
|
35
|
+
def initialize(xsl, xml, params={})
|
36
36
|
super()
|
37
|
-
|
37
|
+
custom_params = params.inject({}){|r,x| r.merge(Hash[x[0].to_s,x[1]])}
|
38
|
+
xslt_transform(*[xsl, xml].map{|x| RXFHelper.read(x).first}, custom_params)
|
38
39
|
end
|
39
40
|
|
40
41
|
def to_s(options={})
|
@@ -178,7 +179,8 @@ class Rexslt
|
|
178
179
|
|
179
180
|
indent_before(element, x, doc_element, indent + 1, i) if @indent == true
|
180
181
|
name = x.attributes[:name]
|
181
|
-
|
182
|
+
|
183
|
+
new_element = Rexle::Element.new(name).add_text(x.text.strip)
|
182
184
|
doc_element.add new_element
|
183
185
|
read_node(x, element, new_element, indent, i)
|
184
186
|
indent_after(element, x, doc_element, indent, i) if @indent == true
|
@@ -219,11 +221,18 @@ class Rexslt
|
|
219
221
|
def xsl_if(element, x, doc_element, indent, i=0)
|
220
222
|
|
221
223
|
condition = x.attributes[:test].gsub('position()',i.to_s).gsub('<','<').gsub('>','>')
|
224
|
+
|
222
225
|
result = eval(condition)
|
223
|
-
|
226
|
+
#jr130712 result = element.element condition
|
227
|
+
|
224
228
|
if result then
|
225
|
-
|
229
|
+
x.children.each do |childx|
|
230
|
+
read_node element, childx, doc_element, indent, i
|
231
|
+
end
|
226
232
|
end
|
233
|
+
#jr100712if result then
|
234
|
+
#jr100712 read_node(x, element, doc_element, indent)
|
235
|
+
#jr100712end
|
227
236
|
end
|
228
237
|
|
229
238
|
def indent_before(element, x, doc_element, indent, i)
|
@@ -340,12 +349,21 @@ class Rexslt
|
|
340
349
|
end
|
341
350
|
|
342
351
|
def xsl_value_of(element, x, doc_element, indent, i)
|
352
|
+
#@param = {'view' => 'eee'}
|
343
353
|
field = x.attributes[:select]
|
344
|
-
o =
|
354
|
+
o = case field
|
355
|
+
when '.'
|
356
|
+
element.text
|
357
|
+
when /^\$/
|
358
|
+
@param[field[/^\$(.*)/,1]]
|
359
|
+
else
|
360
|
+
element.text(field)
|
361
|
+
end
|
362
|
+
#o = field == '.' ? element.text : element.text(field)
|
345
363
|
doc_element.add_element o.to_s
|
346
364
|
end
|
347
365
|
|
348
|
-
def xslt_transform(xsl, xml)
|
366
|
+
def xslt_transform(xsl, xml, custom_params={})
|
349
367
|
|
350
368
|
doc_xml = Rexle.new xml
|
351
369
|
@doc_xsl = Rexle.new xsl
|
@@ -373,6 +391,12 @@ class Rexslt
|
|
373
391
|
|
374
392
|
@indent = (h and h[:indent] == 'yes') ? true : false
|
375
393
|
|
394
|
+
params = @doc_xsl.root.xpath("xsl:param").map{|x| [x.attributes[:name], x.text]}
|
395
|
+
@param = Hash[params].merge(custom_params) if params
|
396
|
+
|
397
|
+
# search for params
|
398
|
+
|
399
|
+
|
376
400
|
# fetch the templates
|
377
401
|
#puts "Rexle:Version: " + Rexle.version
|
378
402
|
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: rexslt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.3.
|
5
|
+
version: 0.3.7
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- James Robertson
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-08-12 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rxfhelper
|