rexslt 0.3.7 → 0.3.8

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 +32 -25
  2. metadata +2 -2
data/lib/rexslt.rb CHANGED
@@ -110,9 +110,10 @@ class Rexslt
110
110
  read_node template, child_node, doc_element, indent, i+1
111
111
  end
112
112
  else
113
- matched_node.each_with_index do |child_node,i|
113
+ r = matched_node.each_with_index do |child_node,i|
114
114
  read_node template, child_node, doc_element, indent, i+1
115
115
  end
116
+ return r
116
117
  end
117
118
  end
118
119
 
@@ -168,9 +169,11 @@ class Rexslt
168
169
  end
169
170
 
170
171
  def xsl_copy_of(element, x, doc_element, indent, i)
171
-
172
+ indent = 1 unless indent
172
173
  indent_element(element, x, doc_element, indent, indent - 1) do
173
- doc_element.add element
174
+ field = x.attributes[:select]
175
+ child = element.element(field)
176
+ doc_element.add child
174
177
  end
175
178
 
176
179
  end
@@ -179,6 +182,10 @@ class Rexslt
179
182
 
180
183
  indent_before(element, x, doc_element, indent + 1, i) if @indent == true
181
184
  name = x.attributes[:name]
185
+ variable = name[/^\{(.*)\}$/,1]
186
+ if variable then
187
+ name = element.element("name()")
188
+ end
182
189
 
183
190
  new_element = Rexle::Element.new(name).add_text(x.text.strip)
184
191
  doc_element.add new_element
@@ -189,7 +196,7 @@ class Rexslt
189
196
  def xsl_for_each(element, x, doc_element, indent, i)
190
197
 
191
198
  xpath = x.attributes[:select]
192
- nodes = element.match xpath
199
+ nodes = element.xpath xpath
193
200
 
194
201
  # check for sort
195
202
  sort_node = x.element 'xsl:sort'
@@ -199,18 +206,21 @@ class Rexslt
199
206
  sort_field = sort_node.attributes[:select]
200
207
  order = sort_node.attributes[:order]
201
208
  sort_node.parent.delete sort_node
202
-
203
- nodes = nodes.sort_by do |node|
204
-
205
- r = node.element sort_field
206
- if r.is_a? Rexle::Element then
207
- r.text
208
- else
209
- # it's a string
210
- r
209
+
210
+ if sort_field then
211
+ nodes = nodes.sort_by do |node|
212
+
213
+ r = node.element sort_field
214
+
215
+ if r.is_a? Rexle::Element then
216
+ r.text
217
+ else
218
+ # it's a string
219
+ r
220
+ end
211
221
  end
212
- end
213
222
 
223
+ end
214
224
  nodes.reverse! if order.downcase == 'descending'
215
225
  end
216
226
 
@@ -221,18 +231,13 @@ class Rexslt
221
231
  def xsl_if(element, x, doc_element, indent, i=0)
222
232
 
223
233
  condition = x.attributes[:test].gsub('position()',i.to_s).gsub('&lt;','<').gsub('&gt;','>')
224
-
225
- result = eval(condition)
226
- #jr130712 result = element.element condition
234
+ result = element.element condition
227
235
 
228
236
  if result then
229
- x.children.each do |childx|
230
- read_node element, childx, doc_element, indent, i
231
- end
237
+
238
+ read_node x.children, x, doc_element, indent, i
232
239
  end
233
- #jr100712if result then
234
- #jr100712 read_node(x, element, doc_element, indent)
235
- #jr100712end
240
+
236
241
  end
237
242
 
238
243
  def indent_before(element, x, doc_element, indent, i)
@@ -292,6 +297,9 @@ class Rexslt
292
297
  method_name = x.name.gsub(/[:-]/,'_').to_sym
293
298
 
294
299
  if @xsl_methods.include? method_name then
300
+ if method_name == :'xsl_apply_templates' then
301
+ #doc_element = doc_element.elements.last
302
+ end
295
303
  method(method_name).call(element, x, doc_element, indent, i)
296
304
  else
297
305
 
@@ -343,7 +351,7 @@ class Rexslt
343
351
  end
344
352
 
345
353
  def xsl_text(element, x, doc_element, indent, i)
346
- val = @indent == true ? padding(doc_element, indent, x) : ''
354
+ val = @indent == true ? padding(doc_element, indent, x) : ''
347
355
  val += x.text
348
356
  doc_element.add_element val
349
357
  end
@@ -393,7 +401,6 @@ class Rexslt
393
401
 
394
402
  params = @doc_xsl.root.xpath("xsl:param").map{|x| [x.attributes[:name], x.text]}
395
403
  @param = Hash[params].merge(custom_params) if params
396
-
397
404
  # search for params
398
405
 
399
406
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: rexslt
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.3.7
5
+ version: 0.3.8
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-08-12 00:00:00 Z
13
+ date: 2012-08-17 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rxfhelper