rexslt 0.3.6 → 0.3.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/rexslt.rb +31 -7
  2. 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
- xslt_transform *[xsl, xml].map{|x| RXFHelper.read(x).first}
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
- new_element = Rexle::Element.new(name).add_text(x.text)
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('&lt;','<').gsub('&gt;','>')
224
+
222
225
  result = eval(condition)
223
-
226
+ #jr130712 result = element.element condition
227
+
224
228
  if result then
225
- read_node(x, element, doc_element, indent)
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 = field == '.' ? element.text : element.text(field)
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.6
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-06-26 00:00:00 Z
13
+ date: 2012-08-12 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rxfhelper