rexslt 0.3.7 → 0.3.8

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