dynarex 1.2.14 → 1.2.15
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/dynarex.rb +22 -5
- metadata +2 -2
data/lib/dynarex.rb
CHANGED
@@ -18,7 +18,7 @@ class Dynarex
|
|
18
18
|
|
19
19
|
attr_accessor :format_mask, :delimiter, :xslt_schema, :schema, :order, :type
|
20
20
|
|
21
|
-
def self.gem_url() 'http://www.jamesrobertson.eu/ruby/dynarex#1.2.
|
21
|
+
def self.gem_url() 'http://www.jamesrobertson.eu/ruby/dynarex#1.2.15' end
|
22
22
|
|
23
23
|
#Create a new dynarex document from 1 of the following options:
|
24
24
|
#* a local file path
|
@@ -84,8 +84,9 @@ class Dynarex
|
|
84
84
|
end
|
85
85
|
|
86
86
|
def type=(v)
|
87
|
-
@order = 'descending' if v
|
87
|
+
@order = 'descending' if v == 'feed'
|
88
88
|
@type = v
|
89
|
+
@summary[:type] = v
|
89
90
|
end
|
90
91
|
|
91
92
|
# Returns the hash representation of the document summary.
|
@@ -425,7 +426,7 @@ EOF
|
|
425
426
|
header.scan(/\w+\s*=\s*(?:"[^"]+"|'[^']+')/).map\
|
426
427
|
{|x| r = x.split(/=/,2); [(r[0].rstrip + "=").to_sym, \
|
427
428
|
r[1][/^\s*"(.*)"$/,1]] }.each \
|
428
|
-
{|name, value|
|
429
|
+
{|name, value| self.method(name).call(value)}
|
429
430
|
end
|
430
431
|
|
431
432
|
# if records already exist find the max id
|
@@ -444,12 +445,26 @@ EOF
|
|
444
445
|
|
445
446
|
@summary = {}
|
446
447
|
|
448
|
+
# fetch any summary lines
|
447
449
|
while not raw_lines.empty? and \
|
448
450
|
raw_lines.first[/#{a_summary.join('|')}:\s+[\w\*\-\+]+/] do
|
449
451
|
label, val = raw_lines.shift.match(/(\w+):\s+([^$]+)$/).captures
|
450
452
|
@summary[label] = val
|
451
453
|
end
|
452
454
|
end
|
455
|
+
|
456
|
+
if @type == 'checklist' then
|
457
|
+
|
458
|
+
# extract the brackets from the line
|
459
|
+
|
460
|
+
checked = []
|
461
|
+
raw_lines.map! do |x|
|
462
|
+
raw_checked, raw_line = x.partition(/\]/).values_at 0,2
|
463
|
+
checked << (raw_checked[/x/] ? true : false)
|
464
|
+
raw_line
|
465
|
+
end
|
466
|
+
|
467
|
+
end
|
453
468
|
|
454
469
|
if @order == 'descending' then
|
455
470
|
rl = raw_lines
|
@@ -461,6 +476,7 @@ EOF
|
|
461
476
|
raw_lines = rl.each_slice(@fields.count).inject([])\
|
462
477
|
{|r,x| r += x.reverse }.reverse
|
463
478
|
end
|
479
|
+
checked.reverse! if @type == 'checklist'
|
464
480
|
|
465
481
|
end
|
466
482
|
|
@@ -498,7 +514,7 @@ EOF
|
|
498
514
|
else
|
499
515
|
|
500
516
|
raw_lines.map.with_index do |x,i|
|
501
|
-
|
517
|
+
|
502
518
|
begin
|
503
519
|
field_names, field_values = RXRawLineParser.new(@format_mask).parse(x)
|
504
520
|
rescue
|
@@ -509,9 +525,10 @@ EOF
|
|
509
525
|
|
510
526
|
end
|
511
527
|
|
512
|
-
a = lines.map do|x|
|
528
|
+
a = lines.map.with_index do |x,i|
|
513
529
|
created = Time.now.to_s
|
514
530
|
h = Hash[@fields.zip(x.map{|t| t.to_s[/^---/] ? YAML.load(t) : t})]
|
531
|
+
h[@fields.last] = checked[i].to_s if @type == 'checklist'
|
515
532
|
[h[@default_key], {id: '', created: created, last_modified: '', body: h}]
|
516
533
|
end
|
517
534
|
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: dynarex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 1.2.
|
5
|
+
version: 1.2.15
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- James Robertson
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2013-01-
|
13
|
+
date: 2013-01-12 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rexle
|