dxlite 0.3.0 → 0.3.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6638bca4c2fef3679ec9d456318f51b51eeeb49230afadbd1baa8af4308620ca
4
- data.tar.gz: 1fcaedf6a4692a244e5930ed1d8ec10e7784b5003958faafb45b8e32cdaa707a
3
+ metadata.gz: 52a6f519b3142ed9207a881bf65f9df9afceed0bc0eccdb258aa46b61988f20e
4
+ data.tar.gz: 1df9a6b682dc8a05fea3d88152c2d8fdb6042cc75aa246731fa69374568bacfd
5
5
  SHA512:
6
- metadata.gz: 54a8938acfd2116234f3a750c9e007adae6e2bc7cb894379702aebe2730b8a601c88f178a490f4b260275e5682c211efee2c5c9da57b9fa645f5146b66a5c7d9
7
- data.tar.gz: ec2fde50afa20bbea953fc3ffb503ae07f160580248ecde88e99f1c272f64404cf6bea099c75e4286f411f3c83df27516df39394c27e78d3bc1846e2fce2b88d
6
+ metadata.gz: 641a55501dcada49b36db49c38cbbaf66d94283b9c96f5572a7cfce098b651e899d0d3cdede7561cd2b0ce53b42f3a0b1c97518e39cf12ed75b0ca4ead920cef
7
+ data.tar.gz: 1b5abceae389e71fd4f813e6cc841abf212eab8db0a56800dc1f627452b454593cf4b86ced042b8ce14a33c6ae34908f3ef90b968f39979fb268cf1feb2781f0
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/lib/dxlite.rb CHANGED
@@ -11,15 +11,18 @@ require 'rxfhelper'
11
11
  class DxLite
12
12
  using ColouredText
13
13
 
14
- attr_accessor :summary
14
+ attr_accessor :summary, :filepath, :schema
15
15
  attr_reader :records
16
16
 
17
- def initialize(s=nil, filepath: nil, debug: false)
17
+ def initialize(s=nil, autosave: false, debug: false)
18
18
 
19
- @filepath, @debug = filepath, debug
19
+ @autosave, @debug = autosave, debug
20
20
 
21
21
  return unless s
22
22
  buffer, type = RXFHelper.read(s)
23
+
24
+ @filepath = s if type == :file or type == :dfs
25
+
23
26
  puts 'type: ' + type.inspect if @debug
24
27
  puts 'buffer: ' + buffer.inspect if @debug
25
28
 
@@ -80,16 +83,42 @@ class DxLite
80
83
 
81
84
  def delete(id)
82
85
  found = @records.find {|x| x[:id] == id}
83
- @records.delete found if found
86
+
87
+ if found then
88
+ @records.delete found
89
+ save() if @autosave
90
+ end
91
+
84
92
  end
85
93
 
86
94
  def create(rawh, id: nil, custom_attributes: {created: Time.now})
95
+
96
+ if id.nil? then
97
+
98
+ puts '@records: ' + @records.inspect if @debug
99
+
100
+ if @records then
101
+ id = @records.map {|x| x[:id].to_i}.max.to_i + 1
102
+ else
103
+ @records = []
104
+ id = 1
105
+ end
106
+
107
+ end
87
108
 
88
- id ||= @records.map {|x| x[:id].to_i}.max.to_i + 1
89
109
  h2 = custom_attributes
90
- h = fields.map {|x| [x.to_sym, nil] }.to_h.merge(rawh)
91
- @records << {id: id.to_s, created: h2[:created], last_modified: nil,
92
- body: h}
110
+
111
+ fields = rawh.keys
112
+ puts 'fields: ' + fields.inspect if @debug
113
+
114
+ h3 = fields.map {|x| [x.to_sym, nil] }.to_h.merge(rawh)
115
+ h = {id: id.to_s, created: h2[:created], last_modified: nil, body: h3}
116
+ @records << h
117
+
118
+ save() if @autosave
119
+
120
+ RecordX.new(h[:body], self, h[:id], h[:created], h[:last_modified])
121
+
93
122
  end
94
123
 
95
124
  def fields()
@@ -108,7 +137,9 @@ class DxLite
108
137
  if obj.is_a? Array then
109
138
 
110
139
  unless schema() then
140
+ puts 'obj.first: ' + obj.first.inspect if @debug
111
141
  cols = obj.first.keys.map {|c| c == 'id' ? 'uid' : c}
142
+ puts 'after cols' if @debug
112
143
  self.schema = "items/item(%s)" % cols.join(', ')
113
144
  end
114
145
 
@@ -155,6 +186,10 @@ class DxLite
155
186
  end
156
187
 
157
188
  def save(file=@filepath)
189
+
190
+ return unless file
191
+ @filepath = file
192
+
158
193
  s = File.extname(file) == '.json' ? to_json() : to_xml()
159
194
  File.write file, s
160
195
  end
@@ -222,13 +257,20 @@ class DxLite
222
257
  end
223
258
 
224
259
  r = @records.find {|x| x[:id] == id}
225
- r[:body].merge!(obj)
260
+
261
+ if r then
262
+
263
+ r[:body].merge!(obj)
264
+ save() if @autosave
265
+
266
+ end
267
+
226
268
  end
227
269
 
228
270
  private
229
271
 
230
272
  def find_record(rec, value, x)
231
- value.is_a?(Regexp) ? rec[x.to_sym] =~ value : rec[x.to_sym] == value
273
+ r = value.is_a?(Regexp) ? rec[x.to_sym] =~ value : rec[x.to_sym] == value
232
274
  end
233
275
 
234
276
  def make_methods()
@@ -251,13 +293,20 @@ class DxLite
251
293
 
252
294
  define_singleton_method ('find_all_by_' + x).to_sym do |value|
253
295
 
254
- @records.select {|rec| find_record(rec[:body], value, x) }
296
+ a = @records.select {|rec| find_record(rec[:body], value, x) }
297
+
298
+ a.map do |h|
299
+ RecordX.new(h[:body], self, h[:id], h[:created], h[:last_modified])
300
+ end
255
301
 
256
302
  end
257
303
 
258
304
  define_singleton_method ('find_by_' + x).to_sym do |value|
259
305
 
260
- @records.find {|rec| find_record(rec[:body], value, x) }
306
+ h = @records.find {|rec| find_record(rec[:body], value, x) }
307
+ return nil unless h
308
+
309
+ RecordX.new(h[:body], self, h[:id], h[:created], h[:last_modified])
261
310
 
262
311
  end
263
312
 
@@ -277,9 +326,20 @@ class DxLite
277
326
  #puts 'h1:' + h1.inspect if @debug
278
327
 
279
328
  h = h1[h1.keys.first]
280
-
281
- @summary = h[:summary]
282
- @records = h[:records].map {|x| x[x.keys.first]}
329
+
330
+ @summary = {}
331
+
332
+ h[:summary].each do |key, value|
333
+
334
+ if %i(recordx_type format_mask schema).include? key then
335
+ @summary[key] = value
336
+ else
337
+ @summary[key.to_s] = value
338
+ end
339
+
340
+ end
341
+
342
+ @records = h[:records].map {|x| x[x.keys.first]}
283
343
 
284
344
  end
285
345
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dxlite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -35,7 +35,7 @@ cert_chain:
35
35
  dwbAN6/wokoLVZAiMRG1vZlI6RhtSOTHvFHbfBE5JI9rhjRtui8yeV+t8iI8G4Zs
36
36
  2NszuYzdlVfzlrUiPWY5jL9P
37
37
  -----END CERTIFICATE-----
38
- date: 2021-01-23 00:00:00.000000000 Z
38
+ date: 2021-02-20 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: recordx
metadata.gz.sig CHANGED
Binary file