rexslt 0.3.7 → 0.3.8
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/rexslt.rb +32 -25
- 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
|
-
|
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.
|
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
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
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('<','<').gsub('>','>')
|
224
|
-
|
225
|
-
result = eval(condition)
|
226
|
-
#jr130712 result = element.element condition
|
234
|
+
result = element.element condition
|
227
235
|
|
228
236
|
if result then
|
229
|
-
|
230
|
-
|
231
|
-
end
|
237
|
+
|
238
|
+
read_node x.children, x, doc_element, indent, i
|
232
239
|
end
|
233
|
-
|
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.
|
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-
|
13
|
+
date: 2012-08-17 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rxfhelper
|