dynarex 1.3.5 → 1.4.0

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 +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