dynarex 1.1.27 → 1.1.28
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.
- data/lib/dynarex.rb +21 -11
- metadata +2 -2
data/lib/dynarex.rb
CHANGED
@@ -26,8 +26,9 @@ class Dynarex
|
|
26
26
|
# Dynarex.new '<contacts><summary><schema>contacts/contact(name,age,dob)</schema></summary><records/></contacts>'
|
27
27
|
|
28
28
|
def initialize(location=nil)
|
29
|
-
@delimiter = ' '
|
29
|
+
@delimiter = ' '
|
30
30
|
open(location) if location
|
31
|
+
@dirty_flag = false
|
31
32
|
end
|
32
33
|
|
33
34
|
def add(x)
|
@@ -76,11 +77,13 @@ class Dynarex
|
|
76
77
|
#Return a Hash (which can be edited) containing all records.
|
77
78
|
|
78
79
|
def records
|
80
|
+
load_records if @dirty_flag == true
|
79
81
|
@records
|
80
82
|
end
|
81
83
|
|
82
84
|
#Returns a ready-only snapshot of records as a simple Hash.
|
83
85
|
def flat_records
|
86
|
+
load_records if @dirty_flag == true
|
84
87
|
@flat_records
|
85
88
|
end
|
86
89
|
|
@@ -151,11 +154,12 @@ EOF
|
|
151
154
|
|
152
155
|
def create(arg, id=nil)
|
153
156
|
|
154
|
-
rebuild_doc()
|
157
|
+
#jr190512 rebuild_doc()
|
155
158
|
methods = {Hash: :hash_create, String: :create_from_line}
|
156
159
|
send (methods[arg.class.to_s.to_sym]), arg, id
|
157
160
|
|
158
|
-
load_records
|
161
|
+
#jr190512 load_records
|
162
|
+
@dirty_flag = true
|
159
163
|
self
|
160
164
|
end
|
161
165
|
|
@@ -185,7 +189,7 @@ EOF
|
|
185
189
|
fields.each {|k,v| record.element(k.to_s).text = v if v}
|
186
190
|
record.add_attribute(last_modified: Time.now.to_s)
|
187
191
|
|
188
|
-
|
192
|
+
@dirty_flag = true
|
189
193
|
|
190
194
|
self
|
191
195
|
|
@@ -202,7 +206,7 @@ EOF
|
|
202
206
|
else
|
203
207
|
@doc.delete x
|
204
208
|
end
|
205
|
-
|
209
|
+
@dirty_flag = true
|
206
210
|
self
|
207
211
|
end
|
208
212
|
|
@@ -246,7 +250,8 @@ EOF
|
|
246
250
|
xml.send(@record_name, {id: item[:id], created: item[:created], \
|
247
251
|
last_modified: item[:last_modified]}, '') do
|
248
252
|
item[:body].each do |name,value|
|
249
|
-
name = name.to_s.prepend('._').to_sym if reserved_keywords.include? name
|
253
|
+
#name = name.to_s.prepend('._').to_sym if reserved_keywords.include? name
|
254
|
+
name = ('._' + name.to_s).to_sym if reserved_keywords.include? name
|
250
255
|
xml.send name, value
|
251
256
|
end
|
252
257
|
end
|
@@ -257,7 +262,7 @@ EOF
|
|
257
262
|
xml.records
|
258
263
|
end # end of if @records
|
259
264
|
end
|
260
|
-
|
265
|
+
#puts 'a : ' + a.inspect
|
261
266
|
@doc = Rexle.new a
|
262
267
|
end
|
263
268
|
|
@@ -284,8 +289,10 @@ EOF
|
|
284
289
|
return xslt
|
285
290
|
end
|
286
291
|
|
287
|
-
def to_rss(opt={},
|
288
|
-
|
292
|
+
def to_rss(opt={}, xslt=nil)
|
293
|
+
xslt ||= self.to_xslt(opt)
|
294
|
+
xml = Rexslt.new(xslt, self.to_xml).to_xml
|
295
|
+
"<rss version='2.0'>%s</rss>" % xml
|
289
296
|
end
|
290
297
|
|
291
298
|
def xpath(x)
|
@@ -304,6 +311,7 @@ EOF
|
|
304
311
|
end
|
305
312
|
|
306
313
|
def findx_by(field, value)
|
314
|
+
(load_records; rebuild_doc) if @dirty_flag == true
|
307
315
|
r = @doc.root.element("records/*[#{field}='#{value}']")
|
308
316
|
r ? recordx_to_record(r) : nil
|
309
317
|
end
|
@@ -345,6 +353,7 @@ EOF
|
|
345
353
|
end
|
346
354
|
|
347
355
|
def display_xml(opt={})
|
356
|
+
load_records if @dirty_flag == true
|
348
357
|
rebuild_doc()
|
349
358
|
@doc.xml(opt) #jr230711 pretty: true
|
350
359
|
end
|
@@ -369,7 +378,7 @@ EOF
|
|
369
378
|
raw_summary = schema[/\[([^\]]+)/,1]
|
370
379
|
raw_lines = buffer.gsub(/^\s*#[^\n]+/,'').gsub(/\n\n/,"\n")\
|
371
380
|
.strip.split(/\r?\n|\r(?!\n)/)
|
372
|
-
|
381
|
+
|
373
382
|
if raw_summary then
|
374
383
|
a_summary = raw_summary.split(',').map(&:strip)
|
375
384
|
|
@@ -511,6 +520,7 @@ EOF
|
|
511
520
|
|
512
521
|
#Returns a ready-only snapshot of records as a simple Hash.
|
513
522
|
@flat_records = @records.values.map{|x| x[:body]}
|
523
|
+
@dirty_flag = false
|
514
524
|
end
|
515
525
|
|
516
526
|
def display()
|
@@ -550,4 +560,4 @@ EOF
|
|
550
560
|
end
|
551
561
|
end
|
552
562
|
|
553
|
-
end
|
563
|
+
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: dynarex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 1.1.
|
5
|
+
version: 1.1.28
|
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: 2012-
|
13
|
+
date: 2012-06-19 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rexle
|