dynarex 1.3.5 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|