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.
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