rexslt 0.3.6 → 0.3.7
Sign up to get free protection for your applications and to get access to all the features.
- 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
|