dynarex 1.3.5 → 1.4.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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/dynarex.rb +37 -33
- metadata +38 -18
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 57b0819d94ee366e3dd26ba97373908cb8683c06
|
4
|
+
data.tar.gz: 492090c76d41b762771724111fd3369eeaa7b50a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5f0c3dbfd05f038e9783ddf43dc5f9922ca824d4f0dbd488a0673f8d8b9905745faa8ea13ee80f86a11a7949a58cf2e435a86113a7502c74646fe1fca257aab6
|
7
|
+
data.tar.gz: ba3039fcffe2b1a6da4e7aafd03adebc5fb16477da00139f5c0a97fce0ed5470693f88d487231967a82ecc7c02814525b05db47ef383d77cc1f55e12541a40db
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/dynarex.rb
CHANGED
@@ -16,6 +16,7 @@ require 'rowx'
|
|
16
16
|
require 'nokogiri'
|
17
17
|
require 'ostruct'
|
18
18
|
require 'table-formatter'
|
19
|
+
require 'rxfhelper'
|
19
20
|
|
20
21
|
|
21
22
|
class DynarexException < Exception
|
@@ -39,14 +40,15 @@ class Dynarex
|
|
39
40
|
def initialize(rawx=nil, opt={})
|
40
41
|
|
41
42
|
@opt = {username: nil, password: nil}.merge opt
|
42
|
-
|
43
|
-
|
43
|
+
@delimiter = ''
|
44
|
+
|
44
45
|
openx(rawx.clone) if rawx
|
46
|
+
|
45
47
|
if @order == 'descending' then
|
46
48
|
@records = records_to_h(:descending)
|
47
49
|
rebuild_doc
|
48
50
|
end
|
49
|
-
|
51
|
+
|
50
52
|
end
|
51
53
|
|
52
54
|
def add(x)
|
@@ -192,9 +194,6 @@ xsl_buffer =<<EOF
|
|
192
194
|
EOF
|
193
195
|
|
194
196
|
|
195
|
-
#format_mask = XPath.first(@doc.root, 'summary/format_mask/text()').to_s
|
196
|
-
#format_mask = @doc.root.element('summary/format_mask/text()')
|
197
|
-
|
198
197
|
raw_summary_fields = self.summary[:schema][/^\w+\[([^\]]+)\]/,1]
|
199
198
|
sumry = ''
|
200
199
|
|
@@ -281,14 +280,17 @@ EOF
|
|
281
280
|
@local_filepath = filepath
|
282
281
|
xml = display_xml(opt)
|
283
282
|
buffer = block_given? ? yield(xml) : xml
|
284
|
-
File.
|
283
|
+
File.write filepath, buffer
|
285
284
|
end
|
286
285
|
|
287
286
|
#Parses 1 or more lines of text to create or update existing records.
|
288
287
|
|
289
288
|
def parse(x=nil)
|
290
|
-
|
291
|
-
|
289
|
+
|
290
|
+
raw_buffer, type = RXFHelper.read(x)
|
291
|
+
|
292
|
+
if raw_buffer.is_a? String then
|
293
|
+
buffer = raw_buffer.clone
|
292
294
|
buffer = yield if block_given?
|
293
295
|
string_parse buffer
|
294
296
|
else
|
@@ -305,12 +307,10 @@ EOF
|
|
305
307
|
|
306
308
|
def create(arg, id=nil)
|
307
309
|
raise 'Dynarex#create(): input error: no arg provided' unless arg
|
308
|
-
|
309
|
-
#jr291012 (load_records; rebuild_doc) if @dirty_flag == true
|
310
|
+
|
310
311
|
methods = {Hash: :hash_create, String: :create_from_line}
|
311
312
|
send (methods[arg.class.to_s.to_sym]), arg, id
|
312
313
|
|
313
|
-
#jr291012load_records
|
314
314
|
@dirty_flag = true
|
315
315
|
|
316
316
|
self
|
@@ -405,10 +405,12 @@ EOF
|
|
405
405
|
|
406
406
|
@summary.each do |key,value|
|
407
407
|
|
408
|
-
|
408
|
+
v = value.gsub('>','>')\
|
409
409
|
.gsub('<','<')\
|
410
410
|
.gsub(/(&\s|&[a-zA-Z\.]+;?)/) {|x| x[-1] == ';' ? x : x.sub('&','&')}
|
411
411
|
|
412
|
+
xml.send key, v
|
413
|
+
|
412
414
|
end
|
413
415
|
end
|
414
416
|
|
@@ -421,11 +423,11 @@ EOF
|
|
421
423
|
xml.records do
|
422
424
|
|
423
425
|
records.each do |k, item|
|
424
|
-
|
426
|
+
|
425
427
|
xml.send(@record_name, {id: item[:id], created: item[:created], \
|
426
428
|
last_modified: item[:last_modified]}, '') do
|
427
429
|
item[:body].each do |name,value|
|
428
|
-
|
430
|
+
|
429
431
|
name = ('._' + name.to_s).to_sym if reserved_keywords.include? name
|
430
432
|
val = value.send(value.is_a?(String) ? :to_s : :to_yaml)
|
431
433
|
xml.send(name, val.gsub('>','>')\
|
@@ -445,7 +447,7 @@ EOF
|
|
445
447
|
end
|
446
448
|
|
447
449
|
doc = Rexle.new(a)
|
448
|
-
|
450
|
+
|
449
451
|
if @xslt then
|
450
452
|
doc.instructions = [['xml-stylesheet',
|
451
453
|
"title='XSL_formatting' type='text/xsl' href='#{@xslt}'"]]
|
@@ -645,6 +647,7 @@ EOF
|
|
645
647
|
|
646
648
|
r = header.scan(/#{r1}|#{r2}/).map(&:compact).flatten
|
647
649
|
r.each do |x|
|
650
|
+
|
648
651
|
attr, val = x.split(/\s*=\s*["']/,2)
|
649
652
|
self.method((attr + '=').to_sym).call(unescape val)
|
650
653
|
end
|
@@ -655,11 +658,7 @@ EOF
|
|
655
658
|
i = @doc.root.xpath('max(records/*/attribute::id)').to_i
|
656
659
|
|
657
660
|
raw_summary = schema[/\[([^\]]+)/,1]
|
658
|
-
#rowx = buffer[/--\+.*/m]
|
659
661
|
|
660
|
-
#buffer = rowx if rowx
|
661
|
-
|
662
|
-
#jr061013 raw_lines = buffer.gsub(/^\s*#[^\n]+/,'').lines.to_a
|
663
662
|
raw_lines = buffer.lines.to_a
|
664
663
|
|
665
664
|
if raw_summary then
|
@@ -716,7 +715,7 @@ EOF
|
|
716
715
|
raw_lines.shift while raw_lines.first.strip.empty?
|
717
716
|
|
718
717
|
lines = case raw_lines.first.chomp
|
719
|
-
|
718
|
+
|
720
719
|
when '---'
|
721
720
|
|
722
721
|
yaml = YAML.load raw_lines.join("\n")
|
@@ -815,6 +814,7 @@ EOF
|
|
815
814
|
end
|
816
815
|
|
817
816
|
a = lines.map.with_index do |x,i|
|
817
|
+
|
818
818
|
created = Time.now.to_s
|
819
819
|
|
820
820
|
h = Hash[
|
@@ -830,7 +830,7 @@ EOF
|
|
830
830
|
end
|
831
831
|
|
832
832
|
h2 = Hash[a]
|
833
|
-
|
833
|
+
|
834
834
|
#replace the existing records hash
|
835
835
|
h = @records
|
836
836
|
i = 0
|
@@ -850,8 +850,7 @@ EOF
|
|
850
850
|
end
|
851
851
|
|
852
852
|
h.each {|key, item| h.delete(key) if not h2.has_key? key}
|
853
|
-
|
854
|
-
#load_records
|
853
|
+
|
855
854
|
@flat_records = @records.values.map{|x| x[:body]}
|
856
855
|
@flat_records = @flat_records.take @limit_by if @limit_by
|
857
856
|
|
@@ -889,7 +888,6 @@ EOF
|
|
889
888
|
@summary.merge!({recordx_type: 'dynarex', format_mask: format_mask, schema: s})
|
890
889
|
@records = {}
|
891
890
|
@flat_records = {}
|
892
|
-
|
893
891
|
rebuild_doc
|
894
892
|
|
895
893
|
end
|
@@ -903,9 +901,13 @@ EOF
|
|
903
901
|
if s[/</] then # xml
|
904
902
|
|
905
903
|
buffer = s
|
904
|
+
|
906
905
|
elsif s[/[\[\(]/] # schema
|
906
|
+
|
907
907
|
dynarex_new(s)
|
908
|
+
|
908
909
|
elsif s[/^https?:\/\//] then # url
|
910
|
+
|
909
911
|
buffer = Kernel.open(s, 'UserAgent' => 'Dynarex-Reader',\
|
910
912
|
http_basic_authentication: [@opt[:username], @opt[:password]]).read
|
911
913
|
else # local file
|
@@ -915,16 +917,18 @@ EOF
|
|
915
917
|
end
|
916
918
|
|
917
919
|
if buffer then
|
920
|
+
|
918
921
|
raw_stylesheet = buffer.slice!(/<\?xml-stylesheet[^>]+>/)
|
919
922
|
@xslt = raw_stylesheet[/href=["']([^"']+)/,1] if raw_stylesheet
|
920
923
|
|
921
924
|
@doc = Rexle.new(buffer) unless @doc
|
922
925
|
end
|
923
|
-
|
924
|
-
|
926
|
+
|
927
|
+
e = @doc.root.element('summary')
|
928
|
+
@schema = e.text('schema')
|
925
929
|
@root_name = @doc.root.name
|
926
930
|
@summary = summary_to_h
|
927
|
-
|
931
|
+
|
928
932
|
summary_methods = (@summary.keys - self.public_methods)
|
929
933
|
|
930
934
|
summary_methods.each do |x|
|
@@ -944,11 +948,12 @@ EOF
|
|
944
948
|
|
945
949
|
@order = @summary[:order] if @summary.has_key? :order
|
946
950
|
|
947
|
-
|
948
|
-
@
|
949
|
-
|
951
|
+
|
952
|
+
@default_key = e.text('default_key')
|
953
|
+
@format_mask = e.text('format_mask')
|
954
|
+
|
950
955
|
@fields = @schema[/([^(]+)\)$/,1].split(/\s*,\s*/).map(&:to_sym)
|
951
|
-
|
956
|
+
|
952
957
|
@fields << @default_key if @default_key and \
|
953
958
|
!@fields.include? @default_key.to_sym
|
954
959
|
|
@@ -1002,7 +1007,6 @@ EOF
|
|
1002
1007
|
def records_to_h(state=:ascending)
|
1003
1008
|
|
1004
1009
|
i = @doc.root.xpath('max(records/*/attribute::id)') || 0
|
1005
|
-
#jr090813 fields = @doc.root.text('summary/schema')[/\(.*\)/].scan(/\w+/)
|
1006
1010
|
records = @doc.root.xpath('records/*')
|
1007
1011
|
|
1008
1012
|
recs = (state == :descending ? records.reverse : records)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dynarex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -31,7 +31,7 @@ cert_chain:
|
|
31
31
|
SLshUY2PSjSnVYx3Gln9vzST8CSTQPZbVpDfzbTqqAZnzqhIe2UaLbzGCMoz8kbw
|
32
32
|
jQ7NXbu03ZrsvQ==
|
33
33
|
-----END CERTIFICATE-----
|
34
|
-
date: 2015-
|
34
|
+
date: 2015-02-03 00:00:00.000000000 Z
|
35
35
|
dependencies:
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rexle
|
@@ -39,20 +39,20 @@ dependencies:
|
|
39
39
|
requirements:
|
40
40
|
- - "~>"
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: '1.
|
42
|
+
version: '1.2'
|
43
43
|
- - ">="
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version: 1.
|
45
|
+
version: 1.2.4
|
46
46
|
type: :runtime
|
47
47
|
prerelease: false
|
48
48
|
version_requirements: !ruby/object:Gem::Requirement
|
49
49
|
requirements:
|
50
50
|
- - "~>"
|
51
51
|
- !ruby/object:Gem::Version
|
52
|
-
version: '1.
|
52
|
+
version: '1.2'
|
53
53
|
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: 1.
|
55
|
+
version: 1.2.4
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: dynarex-import
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -79,40 +79,40 @@ dependencies:
|
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0.
|
82
|
+
version: '0.5'
|
83
83
|
- - ">="
|
84
84
|
- !ruby/object:Gem::Version
|
85
|
-
version: 0.
|
85
|
+
version: 0.5.0
|
86
86
|
type: :runtime
|
87
87
|
prerelease: false
|
88
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
89
|
requirements:
|
90
90
|
- - "~>"
|
91
91
|
- !ruby/object:Gem::Version
|
92
|
-
version: '0.
|
92
|
+
version: '0.5'
|
93
93
|
- - ">="
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
version: 0.
|
95
|
+
version: 0.5.0
|
96
96
|
- !ruby/object:Gem::Dependency
|
97
97
|
name: rexle-builder
|
98
98
|
requirement: !ruby/object:Gem::Requirement
|
99
99
|
requirements:
|
100
100
|
- - "~>"
|
101
101
|
- !ruby/object:Gem::Version
|
102
|
-
version: '0.
|
102
|
+
version: '0.2'
|
103
103
|
- - ">="
|
104
104
|
- !ruby/object:Gem::Version
|
105
|
-
version: 0.1
|
105
|
+
version: 0.2.1
|
106
106
|
type: :runtime
|
107
107
|
prerelease: false
|
108
108
|
version_requirements: !ruby/object:Gem::Requirement
|
109
109
|
requirements:
|
110
110
|
- - "~>"
|
111
111
|
- !ruby/object:Gem::Version
|
112
|
-
version: '0.
|
112
|
+
version: '0.2'
|
113
113
|
- - ">="
|
114
114
|
- !ruby/object:Gem::Version
|
115
|
-
version: 0.1
|
115
|
+
version: 0.2.1
|
116
116
|
- !ruby/object:Gem::Dependency
|
117
117
|
name: rexslt
|
118
118
|
requirement: !ruby/object:Gem::Requirement
|
@@ -199,20 +199,20 @@ dependencies:
|
|
199
199
|
requirements:
|
200
200
|
- - "~>"
|
201
201
|
- !ruby/object:Gem::Version
|
202
|
-
version: '0.
|
202
|
+
version: '0.3'
|
203
203
|
- - ">="
|
204
204
|
- !ruby/object:Gem::Version
|
205
|
-
version: 0.
|
205
|
+
version: 0.3.1
|
206
206
|
type: :runtime
|
207
207
|
prerelease: false
|
208
208
|
version_requirements: !ruby/object:Gem::Requirement
|
209
209
|
requirements:
|
210
210
|
- - "~>"
|
211
211
|
- !ruby/object:Gem::Version
|
212
|
-
version: '0.
|
212
|
+
version: '0.3'
|
213
213
|
- - ">="
|
214
214
|
- !ruby/object:Gem::Version
|
215
|
-
version: 0.
|
215
|
+
version: 0.3.1
|
216
216
|
- !ruby/object:Gem::Dependency
|
217
217
|
name: nokogiri
|
218
218
|
requirement: !ruby/object:Gem::Requirement
|
@@ -253,6 +253,26 @@ dependencies:
|
|
253
253
|
- - ">="
|
254
254
|
- !ruby/object:Gem::Version
|
255
255
|
version: 0.1.13
|
256
|
+
- !ruby/object:Gem::Dependency
|
257
|
+
name: rxfhelper
|
258
|
+
requirement: !ruby/object:Gem::Requirement
|
259
|
+
requirements:
|
260
|
+
- - "~>"
|
261
|
+
- !ruby/object:Gem::Version
|
262
|
+
version: '0.1'
|
263
|
+
- - ">="
|
264
|
+
- !ruby/object:Gem::Version
|
265
|
+
version: 0.1.14
|
266
|
+
type: :runtime
|
267
|
+
prerelease: false
|
268
|
+
version_requirements: !ruby/object:Gem::Requirement
|
269
|
+
requirements:
|
270
|
+
- - "~>"
|
271
|
+
- !ruby/object:Gem::Version
|
272
|
+
version: '0.1'
|
273
|
+
- - ">="
|
274
|
+
- !ruby/object:Gem::Version
|
275
|
+
version: 0.1.14
|
256
276
|
description:
|
257
277
|
email: james@r0bertson.co.uk
|
258
278
|
executables: []
|
metadata.gz.sig
CHANGED
Binary file
|