polyrex 1.1.13 → 1.3.2

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.
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 +87 -33
  5. metadata +39 -75
  6. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 7b5969096e2a90c6076f804745cd2722cc88f908
4
- data.tar.gz: 9f98b301dd9c402b8d3398986366aff7403500ed
2
+ SHA256:
3
+ metadata.gz: ba4f6a16445a6fbd95a21f6e5a5641a7d9f5003f22fb7ed2091e89e93668d6cb
4
+ data.tar.gz: a240d4e392b9b09556e26009bc72c59bd3a502f8a35292204df3ac201e8d5a7e
5
5
  SHA512:
6
- metadata.gz: fa339d87856a0284db91be4042c8a18cc9b20013ff023b5d3d5bfd2d003322edbf04c9962d1b5bf2ff277e8ee041d7836f5cbec535f25a9994beadd9cac7e820
7
- data.tar.gz: 2d546271156b0ce4cc4e6f77fd77da81f7f148a56bee31423600d73df23ce226bb98546c734d9c68906180a9a2e5abf9665bb8d86b683024efa19b85ce62e0c2
6
+ metadata.gz: 732161598ed4e13790d649ba5f531e82e91c6b1d9236b12f3b9acca5cdc4f62dec2538bd3eeee6c40258f677f5b491b01d37d3d20213cd9af47a319bb436a50a
7
+ data.tar.gz: '028715744fce1de173a07353cc193b0481a5b6be848fce8c9c39e7be09fe601044114ae0aea2fc97680c174c72ef9fac79bfa9d05ae053763fd55bf4ea2c4ca4'
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/lib/polyrex.rb CHANGED
@@ -3,10 +3,10 @@
3
3
  # file: polyrex.rb
4
4
 
5
5
  #require 'open-uri'
6
- require 'polyrex-schema'
6
+ #require 'polyrex-schema'
7
7
  #require 'line-tree'
8
8
  require 'polyrex-objects'
9
- require 'polyrex-createobject'
9
+ #require 'polyrex-createobject'
10
10
  require 'polyrex-object-methods'
11
11
  require 'recordx-xslt'
12
12
  #require 'rexle'
@@ -42,18 +42,23 @@ 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')
45
+ def initialize(location=nil, schema: nil, id_counter: '1', debug: false)
46
46
 
47
47
 
48
- @id_counter = id_counter
48
+ @id_counter, @debug = id_counter, debug
49
49
  @format_masks = []
50
50
  @delimiter = ''
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
 
@@ -70,6 +75,7 @@ class Polyrex
70
75
  end
71
76
 
72
77
  @polyrex_xslt = RecordxXSLT.new
78
+ #@parent_node = @doc.root if @doc
73
79
  end
74
80
 
75
81
  def add(pxobj)
@@ -80,15 +86,9 @@ class Polyrex
80
86
  CGI.unescapeHTML(to_xml(options))
81
87
  end
82
88
 
83
- def create(id: nil)
84
-
85
- # @create is a PolyrexCreateObject,
86
- # @parent_node is a Rexle::Element pointing to the current record
87
-
88
- @create.id = id || @id_counter
89
- @create.record = @parent_node.name == 'records' ? \
90
- @parent_node.root : @parent_node.root.element('records')
91
- @create
89
+ def create(id: @id_counter)
90
+ puts 'id: ' + id.inspect if @debug
91
+ @create = PolyrexCreateObject.new(id: id, record: @doc.root)
92
92
  end
93
93
 
94
94
  def delete(x=nil)
@@ -176,6 +176,7 @@ class Polyrex
176
176
 
177
177
  buffer = yield if block_given?
178
178
  string_parse buffer.clone, options
179
+
179
180
  self
180
181
  end
181
182
 
@@ -212,9 +213,10 @@ class Polyrex
212
213
 
213
214
  def records
214
215
 
215
- @doc.root.xpath("records/*").map do |record|
216
- @objects_a[0].new(record)
216
+ @doc.root.xpath("records/*").map do |node|
217
+ Kernel.const_get(node.name.capitalize).new node, id: @id_counter
217
218
  end
219
+
218
220
  end
219
221
 
220
222
  def rxpath(s)
@@ -222,7 +224,9 @@ class Polyrex
222
224
  a = @doc.root.xpath s.split('/').map \
223
225
  {|x| x.sub('[','[summary/').prepend('records/')}.join('/')
224
226
 
225
- a.map {|x| @objects[x.name].new(x, id: x.attributes[:id]) }
227
+ a.map do |node|
228
+ Kernel.const_get(node.name.capitalize).new node, id: node.attributes[:id]
229
+ end
226
230
 
227
231
  end
228
232
 
@@ -265,6 +269,32 @@ class Polyrex
265
269
 
266
270
  make_dynarex(root)
267
271
  end
272
+
273
+ def to_opml()
274
+
275
+ puts '@schema: ' + @schema.inspect if @debug
276
+
277
+ head, body = @schema.split(/(?<=\])/,2)
278
+ schema_body = body.gsub(/(?<=\[)[^\]]+/) do |x|
279
+ x.split(/\s*,\s*/).map {|field| '@' + field + ':' + field}.join(', ')
280
+ end
281
+ schema_head = head.gsub(/(?<=\[)[^\]]+/) do |x|
282
+ x.split(/\s*,\s*/).map {|field| field + ':' + field}.join(', ')
283
+ end
284
+
285
+ puts 'schema_body: ' + schema_body.inspect if @debug
286
+ puts 'schema_head: ' + schema_head.inspect if @debug
287
+ xslt_schema = schema_head.sub(/^\w+/,'opml>head') +
288
+ schema_body.gsub(/\w+(?=\[)/,'outline')\
289
+ .sub(/\/(\w+)(?=\[)/,'/body>outline')
290
+
291
+ puts 'xslt_schema: ' + xslt_schema.inspect if @debug
292
+
293
+ recxslt = RecordxXSLT.new(schema: @schema, xslt_schema: xslt_schema)
294
+
295
+ Rexslt.new(recxslt.to_xslt, self.to_xml).to_s
296
+
297
+ end
268
298
 
269
299
  def to_s(header: true)
270
300
 
@@ -275,11 +305,12 @@ class Polyrex
275
305
  summary = item.element 'summary'
276
306
  format_mask = summary.text('format_mask').to_s
277
307
  line = format_mask.gsub(/\[![^\]]+\]/){|x| summary.text(x[2..-2]).to_s}
308
+ puts 'line: ' + line.inspect if @debug
278
309
 
279
- records = item.element('records').elements.to_a
310
+ recordsx = item.element('records').elements.to_a
280
311
 
281
- if records.length > 0 then
282
- line = line + "\n" + build(records, indent + 1).join("\n")
312
+ if recordsx.length > 0 then
313
+ line = line + "\n" + build(recordsx, indent + 1).join("\n")
283
314
  end
284
315
  (' ' * indent) + line
285
316
  end
@@ -312,11 +343,23 @@ class Polyrex
312
343
  declaration = %Q(<?polyrex %s?>\n) % s
313
344
  end
314
345
 
315
- docheader = declaration + sumry
346
+ docheader = declaration + "\n" + sumry
316
347
  out = build(self.records).join("\n")
317
348
  header ? docheader + "\n" + out : out
318
349
 
319
350
  end
351
+
352
+ def to_tree()
353
+
354
+ s = @schema.gsub(/(?<=\[)[^\]]+/) do |x|
355
+ x.split(/\s*,\s*/).map {|field| '@' + field + ':' + field}.join(', ')
356
+ end
357
+
358
+ xslt_schema = s.gsub(/\w+(?=\[)/,'item').sub(/^\w+/,'tree')
359
+ recxslt = RecordxXSLT.new(schema: @schema, xslt_schema: xslt_schema)
360
+ Rexslt.new(recxslt.to_xslt, self.to_xml).to_s
361
+
362
+ end
320
363
 
321
364
  def to_xslt()
322
365
  @polyrex_xslt.schema = @schema
@@ -492,7 +535,7 @@ xsl_buffer = '
492
535
 
493
536
  end
494
537
 
495
- raw_lines = buffer.strip.lines.map(&:rstrip)
538
+ raw_lines = buffer.lstrip.lines.map(&:chomp)
496
539
 
497
540
  raw_summary = schema[/^\w+\[([^\]]+)/,1]
498
541
 
@@ -513,7 +556,9 @@ xsl_buffer = '
513
556
  @parent_node = records.parent
514
557
  records.delete
515
558
 
516
- lines = LineTree.new(raw_lines.join("\n").strip, ignore_label: true).to_a
559
+ puts 'raw_lines: ' + raw_lines.inspect if @debug
560
+ lines = LineTree.new(raw_lines.join("\n"), ignore_label: true).to_a
561
+ puts 'lines: ' + lines.inspect if @debug
517
562
  @parent_node.root.add format_line!( lines)
518
563
 
519
564
  end
@@ -524,10 +569,9 @@ xsl_buffer = '
524
569
 
525
570
  def load_handlers(schema)
526
571
 
527
- @create = PolyrexCreateObject.new(schema, id: @id_counter)
528
- objects = PolyrexObjects.new(schema)
572
+ objects = PolyrexObjects.new(schema, debug: @debug)
529
573
  h = objects.to_h
530
-
574
+ puts 'h: ' + h.inspect if @debug
531
575
  @objects = h.inject({}){|r,x| r.merge x[0].downcase => x[-1]}
532
576
 
533
577
  @objects_a = objects.to_a
@@ -582,12 +626,18 @@ xsl_buffer = '
582
626
  next
583
627
  end
584
628
 
629
+ puts '@schema: ' + @schema.inspect if @debug
630
+ schema_a = @schema.split('/')[1..-1]
631
+
632
+ if @debug then
633
+ puts 'schema_a: ' + schema_a.inspect
634
+ puts 'i: ' + i.inspect
635
+ end
636
+
585
637
  unless @format_masks[i][/^\(.*\)$/] then
586
638
 
587
639
  @field_names, field_values = RXRawLineParser.new(format_masks[i])\
588
640
  .parse(line)
589
-
590
- schema_a = @schema.split('/')[1..-1]
591
641
 
592
642
  @field_names = schema_a[i] ? \
593
643
  schema_a[i][/\[([^\]]+)/,1].split(/\s*,\s*/).map(&:to_sym) : \
@@ -625,7 +675,9 @@ xsl_buffer = '
625
675
 
626
676
  format_mask = @format_masks[i].to_s
627
677
 
628
- schema = "%s[%s]" % [tag_name, @field_names.join(', ')]
678
+ index = i >= schema_a.length ? schema_a.length - 1 : i
679
+
680
+ schema = schema_a[index..-1].join('/')
629
681
  summary.add Rexle::Element.new('format_mask').add_text(format_mask)
630
682
  summary.add Rexle::Element.new('schema').add_text(schema)
631
683
  summary.add Rexle::Element.new('recordx_type').add_text('polyrex')
@@ -752,7 +804,7 @@ xsl_buffer = '
752
804
  node = #{xpath}
753
805
 
754
806
  if node then
755
- @objects['#{class_name}'].new(node, id: @id, objects: @objects)
807
+ Kernel.const_get(node.name.capitalize).new node, id: @id
756
808
  else
757
809
  nil
758
810
  end
@@ -765,7 +817,7 @@ xsl_buffer = '
765
817
 
766
818
  if nodes then
767
819
  nodes.map do |node|
768
- @objects['#{class_name}'].new(node, id: @id, objects: @objects)
820
+ Kernel.const_get(node.name.capitalize).new node, id: @id
769
821
  end
770
822
  else
771
823
  nil
@@ -785,7 +837,9 @@ xsl_buffer = '
785
837
  def refresh_summary()
786
838
 
787
839
  summary = @doc.root.element('summary')
788
- @summary.to_h.each do |k,v|
840
+ @summary.to_h.each do |k,v|
841
+
842
+ puts "k: %s; v: %s" % [k, v] if @debug
789
843
  e = summary.element(k.to_s)
790
844
  if e then
791
845
  e.text = v
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.1.13
4
+ version: 1.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -10,88 +10,53 @@ 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-17 00:00:00.000000000 Z
38
+ date: 2021-05-24 00:00:00.000000000 Z
34
39
  dependencies:
35
- - !ruby/object:Gem::Dependency
36
- name: polyrex-schema
37
- requirement: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - "~>"
40
- - !ruby/object:Gem::Version
41
- version: '0.4'
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- version: 0.4.2
45
- type: :runtime
46
- prerelease: false
47
- version_requirements: !ruby/object:Gem::Requirement
48
- requirements:
49
- - - "~>"
50
- - !ruby/object:Gem::Version
51
- version: '0.4'
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: 0.4.2
55
40
  - !ruby/object:Gem::Dependency
56
41
  name: polyrex-objects
57
42
  requirement: !ruby/object:Gem::Requirement
58
43
  requirements:
59
44
  - - "~>"
60
45
  - !ruby/object:Gem::Version
61
- version: '0.9'
62
- - - ">="
63
- - !ruby/object:Gem::Version
64
- version: 0.9.8
65
- type: :runtime
66
- prerelease: false
67
- version_requirements: !ruby/object:Gem::Requirement
68
- requirements:
69
- - - "~>"
70
- - !ruby/object:Gem::Version
71
- version: '0.9'
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- version: 0.9.8
75
- - !ruby/object:Gem::Dependency
76
- name: polyrex-createobject
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - "~>"
80
- - !ruby/object:Gem::Version
81
- version: '0.6'
46
+ version: '1.0'
82
47
  - - ">="
83
48
  - !ruby/object:Gem::Version
84
- version: 0.6.1
49
+ version: 1.0.1
85
50
  type: :runtime
86
51
  prerelease: false
87
52
  version_requirements: !ruby/object:Gem::Requirement
88
53
  requirements:
89
54
  - - "~>"
90
55
  - !ruby/object:Gem::Version
91
- version: '0.6'
56
+ version: '1.0'
92
57
  - - ">="
93
58
  - !ruby/object:Gem::Version
94
- version: 0.6.1
59
+ version: 1.0.1
95
60
  - !ruby/object:Gem::Dependency
96
61
  name: polyrex-object-methods
97
62
  requirement: !ruby/object:Gem::Requirement
@@ -118,40 +83,40 @@ dependencies:
118
83
  requirements:
119
84
  - - "~>"
120
85
  - !ruby/object:Gem::Version
121
- version: '0.1'
86
+ version: '0.2'
122
87
  - - ">="
123
88
  - !ruby/object:Gem::Version
124
- version: 0.1.6
89
+ version: 0.2.2
125
90
  type: :runtime
126
91
  prerelease: false
127
92
  version_requirements: !ruby/object:Gem::Requirement
128
93
  requirements:
129
94
  - - "~>"
130
95
  - !ruby/object:Gem::Version
131
- version: '0.1'
96
+ version: '0.2'
132
97
  - - ">="
133
98
  - !ruby/object:Gem::Version
134
- version: 0.1.6
99
+ version: 0.2.2
135
100
  - !ruby/object:Gem::Dependency
136
101
  name: dynarex
137
102
  requirement: !ruby/object:Gem::Requirement
138
103
  requirements:
139
104
  - - "~>"
140
105
  - !ruby/object:Gem::Version
141
- version: '1.7'
106
+ version: '1.8'
142
107
  - - ">="
143
108
  - !ruby/object:Gem::Version
144
- version: 1.7.30
109
+ version: 1.8.19
145
110
  type: :runtime
146
111
  prerelease: false
147
112
  version_requirements: !ruby/object:Gem::Requirement
148
113
  requirements:
149
114
  - - "~>"
150
115
  - !ruby/object:Gem::Version
151
- version: '1.7'
116
+ version: '1.8'
152
117
  - - ">="
153
118
  - !ruby/object:Gem::Version
154
- version: 1.7.30
119
+ version: 1.8.19
155
120
  description:
156
121
  email: james@jamesrobertson.eu
157
122
  executables: []
@@ -178,8 +143,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
178
143
  - !ruby/object:Gem::Version
179
144
  version: '0'
180
145
  requirements: []
181
- rubyforge_project:
182
- rubygems_version: 2.6.13
146
+ rubygems_version: 3.1.2
183
147
  signing_key:
184
148
  specification_version: 4
185
149
  summary: A flavour of XML for storing and retrieveing records in a Polyrex hierarchy
metadata.gz.sig CHANGED
Binary file