rexle 0.4.11 → 0.5.0
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/rexle.rb +28 -7
- metadata +21 -1
data/lib/rexle.rb
CHANGED
@@ -4,6 +4,8 @@
|
|
4
4
|
|
5
5
|
require 'rexml/document'
|
6
6
|
require 'rexleparser'
|
7
|
+
require 'dynarex-parser'
|
8
|
+
require 'polyrex-parser'
|
7
9
|
include REXML
|
8
10
|
|
9
11
|
class Rexle
|
@@ -12,7 +14,7 @@ class Rexle
|
|
12
14
|
|
13
15
|
if x then
|
14
16
|
procs = {
|
15
|
-
String: proc {|x|
|
17
|
+
String: proc {|x| parse_string(x)},
|
16
18
|
Array: proc {|x| x},
|
17
19
|
:"REXML::Document" => proc {|x| scan_doc x.root}
|
18
20
|
}
|
@@ -111,7 +113,6 @@ class Rexle
|
|
111
113
|
end
|
112
114
|
end
|
113
115
|
|
114
|
-
#a.shift # added by jr 171110
|
115
116
|
rlist
|
116
117
|
end
|
117
118
|
|
@@ -187,8 +188,6 @@ class Rexle
|
|
187
188
|
end
|
188
189
|
end
|
189
190
|
|
190
|
-
|
191
|
-
|
192
191
|
def scan_match(nodes, element, attr_search, condition, rlist)
|
193
192
|
nodes.children.each.with_index do |x, i|
|
194
193
|
if x.name == element
|
@@ -237,7 +236,7 @@ class Rexle
|
|
237
236
|
|
238
237
|
if x then
|
239
238
|
procs = {
|
240
|
-
String: proc {|x|
|
239
|
+
String: proc {|x| parse_string(x)},
|
241
240
|
Array: proc {|x| x},
|
242
241
|
:"REXML::Document" => proc {|x| scan_doc x.root}
|
243
242
|
}
|
@@ -249,6 +248,29 @@ class Rexle
|
|
249
248
|
@doc = scan_element(*a)
|
250
249
|
self
|
251
250
|
end
|
251
|
+
|
252
|
+
def parse_string(x)
|
253
|
+
|
254
|
+
# check if the XML string is a dynarex document
|
255
|
+
if x[/<summary>/] then
|
256
|
+
|
257
|
+
doc = Document.new("<summary>" + x[/(.*?(<\/?summary>)){2}/m,1])
|
258
|
+
recordx_type = doc.root.text('recordx_type')
|
259
|
+
|
260
|
+
if recordx_type then
|
261
|
+
procs = {
|
262
|
+
'dynarex' => proc {|x| DynarexParser.new(x).to_a},
|
263
|
+
'polyrex' => proc {|x| PolyrexParser.new(x).to_a}
|
264
|
+
}
|
265
|
+
procs[recordx_type].call(x)
|
266
|
+
else
|
267
|
+
RexleParser.new(x).to_a
|
268
|
+
end
|
269
|
+
else
|
270
|
+
RexleParser.new(x).to_a
|
271
|
+
end
|
272
|
+
|
273
|
+
end
|
252
274
|
|
253
275
|
def root() @doc end
|
254
276
|
def xml()
|
@@ -288,5 +310,4 @@ class Rexle
|
|
288
310
|
[node.name, node.text.to_s, attributes, *children]
|
289
311
|
end
|
290
312
|
|
291
|
-
|
292
|
-
end
|
313
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rexle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors: []
|
7
7
|
|
@@ -22,6 +22,26 @@ dependencies:
|
|
22
22
|
- !ruby/object:Gem::Version
|
23
23
|
version: "0"
|
24
24
|
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: dynarex-parser
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: "0"
|
34
|
+
version:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: polyrex-parser
|
37
|
+
type: :runtime
|
38
|
+
version_requirement:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: "0"
|
44
|
+
version:
|
25
45
|
description:
|
26
46
|
email:
|
27
47
|
executables: []
|