polyrex 1.2.0 → 1.3.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/lib/polyrex.rb +60 -10
  5. metadata +37 -33
  6. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 88cb8e71bff63b0569512e98f4fa9019cbd41be1
4
- data.tar.gz: 9a2ec75e486de8da01a1a141b8f544f8953aa6e5
2
+ SHA256:
3
+ metadata.gz: 78c884051d6c0b1950f1d02849428a0a64cdc9832adcaf780e99bb45821450aa
4
+ data.tar.gz: 2b1a471d556dda7ba64a178aeacdf357a7047bfc8f7008bba15c3745b3f7cddb
5
5
  SHA512:
6
- metadata.gz: 81e136370547e87c7f974ffcbcf48ccf53641901f0f4c41c6034855d3b6871ff1d075c1d9df96fc4b94ecfcfc93df9bc1737fe9285a915eba948bdcc15ce454a
7
- data.tar.gz: 492653c62b318392805f21d9d3fb870467f5e5f226f059f6b1a1a9f9f647759aa74f08013c4080a2ac98fed339298602f5153ad36aa712fde1e6bab4cd6a6755
6
+ metadata.gz: a4c1bbb5c8e1d584c8dd61f65e11244ffd335dbdfcf3f21672667d98cb8926773c4cb55d3496a1e00ca4df2621d7ffcb2b4f1d34fb65164c1ad9051e635035d2
7
+ data.tar.gz: 02b2d2878d9c4f99f8000df5db5094bcc29a30d14ea8d8e584b4dc51672d286f6d89cfdeb1913b4b98c6fe3eef46cbe9474843b6a29cec005920f5bc7d5cba8d
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/lib/polyrex.rb CHANGED
@@ -42,7 +42,7 @@ class Polyrex
42
42
  attr_accessor :summary_fields, :xslt_schema, :id_counter,
43
43
  :schema, :type, :delimiter, :xslt, :format_masks
44
44
 
45
- def initialize(location=nil, schema: nil, id_counter: '1', debug: debug)
45
+ def initialize(location=nil, schema: nil, id_counter: '1', debug: false)
46
46
 
47
47
 
48
48
  @id_counter, @debug = id_counter, debug
@@ -51,9 +51,14 @@ class Polyrex
51
51
 
52
52
  self.method(:schema=).call(schema) if schema
53
53
 
54
- if location then
54
+ if location then
55
55
 
56
- openx(location)
56
+ s, type = RXFHelper.read(location)
57
+ return import(s) if s =~ /^\<\?polyrex\b/
58
+
59
+ @local_filepath = location if type == :file or type == :dfs
60
+
61
+ openx(s)
57
62
 
58
63
  if schema then
59
64
 
@@ -114,7 +119,11 @@ class Polyrex
114
119
 
115
120
  end
116
121
 
117
- end
122
+ end
123
+
124
+ def export(filepath)
125
+ File.write filepath, to_s()
126
+ end
118
127
 
119
128
  def record()
120
129
  @parent_node
@@ -264,6 +273,32 @@ class Polyrex
264
273
 
265
274
  make_dynarex(root)
266
275
  end
276
+
277
+ def to_opml()
278
+
279
+ puts '@schema: ' + @schema.inspect if @debug
280
+
281
+ head, body = @schema.split(/(?<=\])/,2)
282
+ schema_body = body.gsub(/(?<=\[)[^\]]+/) do |x|
283
+ x.split(/\s*,\s*/).map {|field| '@' + field + ':' + field}.join(', ')
284
+ end
285
+ schema_head = head.gsub(/(?<=\[)[^\]]+/) do |x|
286
+ x.split(/\s*,\s*/).map {|field| field + ':' + field}.join(', ')
287
+ end
288
+
289
+ puts 'schema_body: ' + schema_body.inspect if @debug
290
+ puts 'schema_head: ' + schema_head.inspect if @debug
291
+ xslt_schema = schema_head.sub(/^\w+/,'opml>head') +
292
+ schema_body.gsub(/\w+(?=\[)/,'outline')\
293
+ .sub(/\/(\w+)(?=\[)/,'/body>outline')
294
+
295
+ puts 'xslt_schema: ' + xslt_schema.inspect if @debug
296
+
297
+ recxslt = RecordxXSLT.new(schema: @schema, xslt_schema: xslt_schema)
298
+
299
+ Rexslt.new(recxslt.to_xslt, self.to_xml).to_s
300
+
301
+ end
267
302
 
268
303
  def to_s(header: true)
269
304
 
@@ -274,11 +309,12 @@ class Polyrex
274
309
  summary = item.element 'summary'
275
310
  format_mask = summary.text('format_mask').to_s
276
311
  line = format_mask.gsub(/\[![^\]]+\]/){|x| summary.text(x[2..-2]).to_s}
312
+ puts 'line: ' + line.inspect if @debug
277
313
 
278
- records = item.element('records').elements.to_a
314
+ recordsx = item.element('records').elements.to_a
279
315
 
280
- if records.length > 0 then
281
- line = line + "\n" + build(records, indent + 1).join("\n")
316
+ if recordsx.length > 0 then
317
+ line = line + "\n" + build(recordsx, indent + 1).join("\n")
282
318
  end
283
319
  (' ' * indent) + line
284
320
  end
@@ -311,11 +347,23 @@ class Polyrex
311
347
  declaration = %Q(<?polyrex %s?>\n) % s
312
348
  end
313
349
 
314
- docheader = declaration + sumry
350
+ docheader = declaration + "\n" + sumry
315
351
  out = build(self.records).join("\n")
316
352
  header ? docheader + "\n" + out : out
317
353
 
318
354
  end
355
+
356
+ def to_tree()
357
+
358
+ s = @schema.gsub(/(?<=\[)[^\]]+/) do |x|
359
+ x.split(/\s*,\s*/).map {|field| '@' + field + ':' + field}.join(', ')
360
+ end
361
+
362
+ xslt_schema = s.gsub(/\w+(?=\[)/,'item').sub(/^\w+/,'tree')
363
+ recxslt = RecordxXSLT.new(schema: @schema, xslt_schema: xslt_schema)
364
+ Rexslt.new(recxslt.to_xslt, self.to_xml).to_s
365
+
366
+ end
319
367
 
320
368
  def to_xslt()
321
369
  @polyrex_xslt.schema = @schema
@@ -491,7 +539,7 @@ xsl_buffer = '
491
539
 
492
540
  end
493
541
 
494
- raw_lines = buffer.strip.lines.map(&:rstrip)
542
+ raw_lines = buffer.lstrip.lines.map(&:chomp)
495
543
 
496
544
  raw_summary = schema[/^\w+\[([^\]]+)/,1]
497
545
 
@@ -512,7 +560,9 @@ xsl_buffer = '
512
560
  @parent_node = records.parent
513
561
  records.delete
514
562
 
515
- lines = LineTree.new(raw_lines.join("\n").strip, ignore_label: true).to_a
563
+ puts 'raw_lines: ' + raw_lines.inspect if @debug
564
+ lines = LineTree.new(raw_lines.join("\n"), ignore_label: true).to_a
565
+ puts 'lines: ' + lines.inspect if @debug
516
566
  @parent_node.root.add format_line!( lines)
517
567
 
518
568
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: polyrex
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -10,27 +10,32 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDXjCCAkagAwIBAgIBATANBgkqhkiG9w0BAQUFADAsMSowKAYDVQQDDCFnZW1t
14
- YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTgwMzE3MTMwMzQ5WhcN
15
- MTkwMzE3MTMwMzQ5WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
- cnRzb24vREM9ZXUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDB5D1x
17
- ISNvSg+4OuXCG4Y+tqBVWrAlJWI8WJoklmuV7abVRJbEHSiWgkmd5HAYyfJUrtO0
18
- JELlNk2KTaLJDUV5TA/se4gUVZbw4+bw81GPvfRl4xa0XXdMwzZVLKP6coryCxqe
19
- CBep7jJD6a16d6Ewbh8p+mnpBOOBNc7A8aw3RUZKkO+uNUdyv0RQTYb8/FNtj7aO
20
- cUR8zY+uGbdtEpjxeBorXIVGfcFHjlXIyxiVB0VnX970MND8dLJ8Ubm3OmjfhykX
21
- xXpdpNpKjwzxsZOe0Sfbs1D1tDrjyh4omZzYeRBwyhFtD79MnWT6tAFQaJE8sDvP
22
- zDR446MQzuPKImqnAgMBAAGjgYowgYcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
23
- HQYDVR0OBBYEFMaIbFeAIfEO6gdh724pxagKOOGGMCYGA1UdEQQfMB2BG2dlbW1h
24
- c3RlckBqYW1lc3JvYmVydHNvbi5ldTAmBgNVHRIEHzAdgRtnZW1tYXN0ZXJAamFt
25
- ZXNyb2JlcnRzb24uZXUwDQYJKoZIhvcNAQEFBQADggEBALZ2aN4EOqoF/ZlaLdrm
26
- CoZYCjnJ1+1+GgOC/didbwwVpoDNFpACwtg4ALyB9mWVr11ni5uK/mpS/mp7Zczz
27
- 3t4EM2O/r45ZJsNaScjx3OnIYaYKCsL22ka9s8RSSbTn81z4+9bQ+wgRoxn1UHiM
28
- DXHQiStNHZ8UmnqJhGVfAen2FL7JXsAqwyYQe7dPwXTaCxARyJFWjzwDbDNAK7fP
29
- IjDmZnQD2Smm70yVWSqJYC2ej7dH9gbZ/m1f5TSib7KCreZ66jZN4Dsi4Nibs6D6
30
- hCr2pfiPoS3nhbgAf3XvP4D146WaQbEgU87QlxPJLhz3yXKi7lwa9XgHQzuifNDi
31
- OXU=
13
+ MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjEwNTI0MTI1MjMzWhcN
15
+ MjIwNTI0MTI1MjMzWjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDxKAjh
17
+ s6uPs8gcMaoia91NWkBsYkIRp98yXB/MeTcAcK+jM3Y3jbKfbsOa1QVETY+KNZPH
18
+ byDLynjQE7xOQhZjMrtDB128+iWT+fCvF/OQS0tMMT5ki3qHQDJSqUfxKngwK9p2
19
+ TlV4EVRaejuPYwGvXxb8qmx9jrR9S3HZVQMHd6aMNAwBb1ZNkSQymWQeEoM+45Un
20
+ pN3XHGEd2zejUOLNrSiZbBvq5fMb/V2a6LPAfg2WvZzWSZgl4jPjVtvUZVp1BUaU
21
+ YAXBUsKZ77FC6jR9lb+9iVJAwDTdsI2G6pX5W8EZG0L7i9jeLMQB8bCCzu2zlAhc
22
+ YJ06owu1LJhPWSxm/3aw6JTKQx0hFepF4mUKHe5iRhDgsVhHNkopzOCQ4JwwHu8G
23
+ PDi1kUQcFVVkWxRr/m/GRQFkYVn3omgIBMWp/JB8mmevqZ5gaCKvHF55wmDpFzyJ
24
+ cPDfCtP/wl8wqf363VQdgiru7EcgxQFtPgx6PyMNzfouhRhkBZIY7wYgROkCAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUcuJiQueO
26
+ q5BdutOcNGPDMgOla5kwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
+ c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
+ BgkqhkiG9w0BAQsFAAOCAYEA1AnaW09JSrJOdlLTeiItH/Mfj6vcAuodI4Ys3PCh
29
+ UfQsIJUedcMysvo+6J0M+hEYL02w6ynWahcQbzvYPr+NwV/8FqMGGAyDpBSaLtrz
30
+ 9J4cxy4p/mq2dF2lEsCUNoSBWvDpvQI4c2w79/gpWE+w0abHyX97r3N2wWv/OiwV
31
+ u06GMpESpRj4RAhhy88aDhGDUfMWd+nZ20gWcs2YR1yJf/JyaDfRcOFqLMgVw35Y
32
+ oQhEZldZrsYsF4FNEBmH2mx2iLq6VbCyZZ3M6jsIHUEDZdrDjbs8ejPvWfEdTW+1
33
+ x7007qRZCfLvIsqAf7GViMWXgbiv0ZFSKgV7qtK0IgVBg0NDor3xc9w/3VLqshTZ
34
+ jIqQb9u4Zkhtsp+Ly/HVroN0cylu1t/el2qILTDOkyKnAikvhKpX1wujv+VVqWwd
35
+ rivEdfkvT/8GV5Nip0lSS+cuk20UhOdJR9QIcCJp0QL4NUik9VYljGbQbQQS6Isc
36
+ iIwZ6uFJfcp9SWBRrSZmlI52
32
37
  -----END CERTIFICATE-----
33
- date: 2018-03-29 00:00:00.000000000 Z
38
+ date: 2021-06-05 00:00:00.000000000 Z
34
39
  dependencies:
35
40
  - !ruby/object:Gem::Dependency
36
41
  name: polyrex-objects
@@ -41,7 +46,7 @@ dependencies:
41
46
  version: '1.0'
42
47
  - - ">="
43
48
  - !ruby/object:Gem::Version
44
- version: 1.0.0
49
+ version: 1.0.1
45
50
  type: :runtime
46
51
  prerelease: false
47
52
  version_requirements: !ruby/object:Gem::Requirement
@@ -51,7 +56,7 @@ dependencies:
51
56
  version: '1.0'
52
57
  - - ">="
53
58
  - !ruby/object:Gem::Version
54
- version: 1.0.0
59
+ version: 1.0.1
55
60
  - !ruby/object:Gem::Dependency
56
61
  name: polyrex-object-methods
57
62
  requirement: !ruby/object:Gem::Requirement
@@ -78,40 +83,40 @@ dependencies:
78
83
  requirements:
79
84
  - - "~>"
80
85
  - !ruby/object:Gem::Version
81
- version: '0.1'
86
+ version: '0.2'
82
87
  - - ">="
83
88
  - !ruby/object:Gem::Version
84
- version: 0.1.6
89
+ version: 0.2.2
85
90
  type: :runtime
86
91
  prerelease: false
87
92
  version_requirements: !ruby/object:Gem::Requirement
88
93
  requirements:
89
94
  - - "~>"
90
95
  - !ruby/object:Gem::Version
91
- version: '0.1'
96
+ version: '0.2'
92
97
  - - ">="
93
98
  - !ruby/object:Gem::Version
94
- version: 0.1.6
99
+ version: 0.2.2
95
100
  - !ruby/object:Gem::Dependency
96
101
  name: dynarex
97
102
  requirement: !ruby/object:Gem::Requirement
98
103
  requirements:
99
104
  - - "~>"
100
105
  - !ruby/object:Gem::Version
101
- version: '1.7'
106
+ version: '1.8'
102
107
  - - ">="
103
108
  - !ruby/object:Gem::Version
104
- version: 1.7.30
109
+ version: 1.8.19
105
110
  type: :runtime
106
111
  prerelease: false
107
112
  version_requirements: !ruby/object:Gem::Requirement
108
113
  requirements:
109
114
  - - "~>"
110
115
  - !ruby/object:Gem::Version
111
- version: '1.7'
116
+ version: '1.8'
112
117
  - - ">="
113
118
  - !ruby/object:Gem::Version
114
- version: 1.7.30
119
+ version: 1.8.19
115
120
  description:
116
121
  email: james@jamesrobertson.eu
117
122
  executables: []
@@ -138,8 +143,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
138
143
  - !ruby/object:Gem::Version
139
144
  version: '0'
140
145
  requirements: []
141
- rubyforge_project:
142
- rubygems_version: 2.6.13
146
+ rubygems_version: 3.1.2
143
147
  signing_key:
144
148
  specification_version: 4
145
149
  summary: A flavour of XML for storing and retrieveing records in a Polyrex hierarchy
metadata.gz.sig CHANGED
Binary file