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