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.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/lib/dynarex.rb +37 -33
  5. metadata +38 -18
  6. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 85c84a866f5477515ee7d711d97ac69d3cadf746
4
- data.tar.gz: ff46fda368a4a1032d2e11b260c63d545555f7fc
3
+ metadata.gz: 57b0819d94ee366e3dd26ba97373908cb8683c06
4
+ data.tar.gz: 492090c76d41b762771724111fd3369eeaa7b50a
5
5
  SHA512:
6
- metadata.gz: da8ade306d95cd031896f6fce0342d72d7003c5cb5de99d9098f4d811436d41a2b14db0b46e4940b51d6548c221d7221be161ae5fd10c5cd65f672037e215bee
7
- data.tar.gz: 43655dd4cdaae682515dcec0d62bcbe5623bc225f2e9de89849104b0dcdeae8cce3a99133626efa2e05509a500755a5dfe0940e793ad24c4e9143c9d5fd1041b
6
+ metadata.gz: 5f0c3dbfd05f038e9783ddf43dc5f9922ca824d4f0dbd488a0673f8d8b9905745faa8ea13ee80f86a11a7949a58cf2e435a86113a7502c74646fe1fca257aab6
7
+ data.tar.gz: ba3039fcffe2b1a6da4e7aafd03adebc5fb16477da00139f5c0a97fce0ed5470693f88d487231967a82ecc7c02814525b05db47ef383d77cc1f55e12541a40db
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -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
- #puts Rexle.version
43
- @delimiter = ''
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
- #jr240913 @dirty_flag = false
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.open(filepath,'w'){|f| f.write buffer }
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
- if x.is_a? String then
291
- buffer = x.clone
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
- #jr291012 rebuild_doc()
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
- xml.send key, value.gsub('>','&gt;')\
408
+ v = value.gsub('>','&gt;')\
409
409
  .gsub('<','&lt;')\
410
410
  .gsub(/(&\s|&[a-zA-Z\.]+;?)/) {|x| x[-1] == ';' ? x : x.sub('&','&amp;')}
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
- #p 'foo ' + item.inspect
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
- #name = name.to_s.prepend('._').to_sym if reserved_keywords.include? name
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('>','&gt;')\
@@ -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
- #refresh_doc
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
- @schema = @doc.root.text('summary/schema')
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
- @default_key = @doc.root.element('summary/default_key/text()')
948
- @format_mask = @doc.root.element('summary/format_mask/text()')
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.3.5
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-01-17 00:00:00.000000000 Z
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.0'
42
+ version: '1.2'
43
43
  - - ">="
44
44
  - !ruby/object:Gem::Version
45
- version: 1.0.39
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.0'
52
+ version: '1.2'
53
53
  - - ">="
54
54
  - !ruby/object:Gem::Version
55
- version: 1.0.39
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.4'
82
+ version: '0.5'
83
83
  - - ">="
84
84
  - !ruby/object:Gem::Version
85
- version: 0.4.6
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.4'
92
+ version: '0.5'
93
93
  - - ">="
94
94
  - !ruby/object:Gem::Version
95
- version: 0.4.6
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.1'
102
+ version: '0.2'
103
103
  - - ">="
104
104
  - !ruby/object:Gem::Version
105
- version: 0.1.9
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.1'
112
+ version: '0.2'
113
113
  - - ">="
114
114
  - !ruby/object:Gem::Version
115
- version: 0.1.9
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.2'
202
+ version: '0.3'
203
203
  - - ">="
204
204
  - !ruby/object:Gem::Version
205
- version: 0.2.5
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.2'
212
+ version: '0.3'
213
213
  - - ">="
214
214
  - !ruby/object:Gem::Version
215
- version: 0.2.5
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