dxlite 0.3.5 → 0.5.1

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/lib/dxlite.rb +177 -147
  4. data.tar.gz.sig +0 -0
  5. metadata +35 -35
  6. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 52a6f519b3142ed9207a881bf65f9df9afceed0bc0eccdb258aa46b61988f20e
4
- data.tar.gz: 1df9a6b682dc8a05fea3d88152c2d8fdb6042cc75aa246731fa69374568bacfd
3
+ metadata.gz: b148c28af592acb924e4ff94ea19a1b0cc85d84c03c948942fb2f156fdca1504
4
+ data.tar.gz: 17d5cd22ba53cc5fb4c650f0df7f396591118b8c75865ad82ee8c10641291793
5
5
  SHA512:
6
- metadata.gz: 641a55501dcada49b36db49c38cbbaf66d94283b9c96f5572a7cfce098b651e899d0d3cdede7561cd2b0ce53b42f3a0b1c97518e39cf12ed75b0ca4ead920cef
7
- data.tar.gz: 1b5abceae389e71fd4f813e6cc841abf212eab8db0a56800dc1f627452b454593cf4b86ced042b8ce14a33c6ae34908f3ef90b968f39979fb268cf1feb2781f0
6
+ metadata.gz: 8116413a89279f69d23d2bb2552786846014f11da6d00c18b63852ab8a58b678e064f7401b391cc6194a62baf6f812bf127e504e2c7f44eafadf4a355e915f27
7
+ data.tar.gz: 587433a7d25d395348d36a1dbb685bc549e78111c9683a92d9dad99a9208a41e8c797fc3ce31118d5c36ba305b2c5e9b79e4c481996835771d77dd82c2020a6c
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/dxlite.rb CHANGED
@@ -3,6 +3,7 @@
3
3
  # file: dxlite.rb
4
4
 
5
5
  require 'c32'
6
+ require 'kvx'
6
7
  require 'json'
7
8
  require 'recordx'
8
9
  require 'rxfhelper'
@@ -11,8 +12,8 @@ require 'rxfhelper'
11
12
  class DxLite
12
13
  using ColouredText
13
14
 
14
- attr_accessor :summary, :filepath, :schema
15
- attr_reader :records
15
+ attr_accessor :summary, :filepath
16
+ attr_reader :records, :schema
16
17
 
17
18
  def initialize(s=nil, autosave: false, debug: false)
18
19
 
@@ -20,189 +21,188 @@ class DxLite
20
21
 
21
22
  return unless s
22
23
  buffer, type = RXFHelper.read(s)
23
-
24
+
24
25
  @filepath = s if type == :file or type == :dfs
25
-
26
+
26
27
  puts 'type: ' + type.inspect if @debug
27
28
  puts 'buffer: ' + buffer.inspect if @debug
28
29
 
29
30
  @records = []
30
-
31
+
31
32
  case type
32
-
33
+
34
+ when :dfs
35
+
36
+ read buffer
37
+
33
38
  when :file
34
-
39
+
35
40
  read buffer
36
-
41
+
37
42
  when :text
38
-
39
- @summary = {schema: s}
40
43
 
41
-
42
- when :url
43
-
44
- read buffer
45
-
46
- end
47
-
48
- puts '@summary: ' + @summary.inspect
49
- @schema = @summary[:schema]
50
-
51
- summary_attributes = {
52
- recordx_type: 'dynarex',
53
- default_key: @schema[/(?<=\()\w+/]
54
- }
44
+ new_summary(s)
55
45
 
56
- puts 'before merge' if @debug
57
- @summary.merge!(summary_attributes)
46
+ when :url
58
47
 
59
- summary = @summary[:schema][/(?<=\[)[^\]]+/]
60
-
61
- if summary then
48
+ read buffer
62
49
 
63
- summary.split(/ *, */).each do |x|
64
- @summary[x] = nil unless @summary[x]
65
- end
66
-
67
- end
68
-
69
- make_methods()
50
+ end
70
51
 
71
- end
52
+ end
72
53
 
73
54
  def all()
74
55
 
75
56
  @records.map do |h|
76
-
57
+
77
58
  puts 'h: ' + h.inspect if @debug
78
- RecordX.new(h[:body], self, h[:id], h[:created],
59
+ RecordX.new(h[:body], self, h[:id], h[:created],
79
60
  h[:last_modified])
80
61
  end
81
62
 
82
- end
83
-
63
+ end
64
+
84
65
  def delete(id)
85
66
  found = @records.find {|x| x[:id] == id}
86
-
67
+
87
68
  if found then
88
- @records.delete found
69
+ @records.delete found
89
70
  save() if @autosave
90
71
  end
91
-
72
+
92
73
  end
93
-
74
+
94
75
  def create(rawh, id: nil, custom_attributes: {created: Time.now})
95
76
 
77
+ if @debug then
78
+ puts 'create:: rawh: ' + rawh.inspect
79
+ puts 'custom_attributes: ' + custom_attributes.inspect
80
+ end
81
+
82
+ key = @summary[:default_key]
83
+
84
+ if key then
85
+
86
+ r = records.find {|x| x[:body][key.to_sym] == rawh[key.to_sym]}
87
+ if r then
88
+ r[:last_modified] = Time.now.to_s
89
+ return false
90
+ end
91
+
92
+ end
93
+
96
94
  if id.nil? then
97
-
95
+
98
96
  puts '@records: ' + @records.inspect if @debug
99
-
97
+
100
98
  if @records then
101
99
  id = @records.map {|x| x[:id].to_i}.max.to_i + 1
102
100
  else
103
101
  @records = []
104
102
  id = 1
105
103
  end
106
-
104
+
107
105
  end
108
-
106
+
109
107
  h2 = custom_attributes
110
-
111
- fields = rawh.keys
112
- puts 'fields: ' + fields.inspect if @debug
108
+
109
+ fields = rawh.keys
110
+ puts 'fields: ' + fields.inspect if @debug
113
111
 
114
112
  h3 = fields.map {|x| [x.to_sym, nil] }.to_h.merge(rawh)
115
113
  h = {id: id.to_s, created: h2[:created], last_modified: nil, body: h3}
116
114
  @records << h
117
-
115
+
118
116
  save() if @autosave
119
-
117
+
120
118
  RecordX.new(h[:body], self, h[:id], h[:created], h[:last_modified])
121
-
119
+
122
120
  end
123
-
121
+
124
122
  def fields()
125
123
  @fields
126
124
  end
127
-
125
+
128
126
  def inspect()
129
- "#<DxLite:%s @debug=%s, @summary=%s, ...>" % [object_id, @debug,
127
+ "#<DxLite:%s @debug=%s, @summary=%s, ...>" % [object_id, @debug,
130
128
  @summary.inspect]
131
129
  end
132
-
130
+
133
131
  # Parses 1 or more lines of text to create or update existing records.
134
132
 
135
133
  def parse(obj=nil)
136
-
134
+
135
+ @records ||= []
136
+
137
137
  if obj.is_a? Array then
138
-
138
+
139
139
  unless schema() then
140
140
  puts 'obj.first: ' + obj.first.inspect if @debug
141
- cols = obj.first.keys.map {|c| c == 'id' ? 'uid' : c}
141
+ cols = obj.first.keys.map {|c| c == 'id' ? 'uid' : c}
142
142
  puts 'after cols' if @debug
143
- self.schema = "items/item(%s)" % cols.join(', ')
143
+ new_summary "items/item(%s)" % cols.join(', ')
144
144
  end
145
-
145
+
146
146
  obj.each do |x|
147
147
  #puts 'x: ' + x.inspect if @debug
148
148
  self.create x, id: nil
149
149
  end
150
-
151
- return self
152
-
153
- end
150
+
151
+ return self
152
+
153
+ end
154
154
  end
155
-
155
+
156
156
  alias import parse
157
-
157
+
158
158
  def parse_xml(buffer)
159
-
159
+
160
160
  doc = Rexle.new(buffer)
161
-
161
+
162
162
  asummary = doc.root.xpath('summary/*').map do |node|
163
163
  puts 'node: ' + node.xml.inspect if @debug
164
164
  [node.name, node.text.to_s]
165
165
  end
166
-
166
+
167
167
  summary = Hash[asummary]
168
168
  summary[:schema] = summary['schema']
169
169
  %w(recordx_type format_mask schema).each {|x| summary.delete x}
170
-
171
- schema = summary[:schema]
170
+
171
+ @schema = summary[:schema]
172
172
  puts 'schema: ' + schema.inspect if @debug
173
-
174
- @fields = schema[/\(([^\)]+)/,1].split(/ *, +/)
173
+
174
+ @fields = @schema[/\(([^\)]+)/,1].split(/ *, +/)
175
175
  puts 'fields: ' + @fields.inspect if @debug
176
-
176
+
177
+ @summary = summary
178
+
177
179
  a = doc.root.xpath('records/*').each do |node|
178
-
180
+
179
181
  h = Hash[@fields.map {|field| [field.to_sym, node.text(field).to_s] }]
180
- self.create h, id: nil
181
-
182
+ self.create h, id: nil, custom_attributes: node.attributes
183
+
182
184
  end
183
185
 
184
- @summary = summary
185
-
186
186
  end
187
187
 
188
188
  def save(file=@filepath)
189
-
189
+
190
190
  return unless file
191
191
  @filepath = file
192
-
192
+
193
193
  s = File.extname(file) == '.json' ? to_json() : to_xml()
194
194
  File.write file, s
195
195
  end
196
-
196
+
197
197
  def to_a()
198
198
  @records.map {|x| x[:body]}
199
199
  end
200
-
200
+
201
201
  def to_h()
202
-
202
+
203
203
  root_name = schema()[/^\w+/]
204
204
  record_name = schema()[/(?<=\/)[^\(]+/]
205
-
205
+
206
206
  h = {
207
207
  root_name.to_sym =>
208
208
  {
@@ -210,139 +210,169 @@ class DxLite
210
210
  records: @records.map {|h| {record_name.to_sym => h} }
211
211
  }
212
212
  }
213
-
213
+
214
214
  end
215
-
215
+
216
216
  def to_json(pretty: true)
217
217
  pretty ? JSON.pretty_generate(to_h()) : to_h()
218
218
  end
219
-
219
+
220
220
  def to_xml()
221
-
221
+
222
222
  root_name = schema()[/^\w+/]
223
223
  record_name = schema()[/(?<=\/)[^\(]+/]
224
-
224
+
225
225
  a = RexleBuilder.build do |xml|
226
-
226
+
227
227
  xml.send(root_name.to_sym) do
228
228
  xml.summary({}, @summary)
229
229
  xml.records do
230
-
230
+
231
231
  all().each do |x|
232
-
233
- h = {id: x.id, created: x.created, last_modified: x.last_modified}
232
+
233
+ h = {id: x.id, created: x.created, last_modified: x.last_modified}
234
234
  puts 'x.to_h: ' + x.to_h.inspect if @debug
235
235
  xml.send(record_name.to_sym, h, x.to_h)
236
-
236
+
237
237
  end
238
-
238
+
239
239
  end
240
240
  end
241
241
  end
242
242
 
243
- Rexle.new(a).xml pretty: true
244
-
245
-
243
+ Rexle.new(a).xml pretty: true
244
+
245
+
246
246
  end
247
-
247
+
248
248
  # Updates a record from an id and a hash containing field name and field value.
249
- # dynarex.update 4, name: Jeff, age: 38
250
-
249
+ # dynarex.update 4, name: Jeff, age: 38
250
+
251
251
  def update(id, obj)
252
-
252
+
253
253
  if @debug then
254
254
  puts 'inside update'.info
255
255
  puts ('id: ' + id.inspect).debug
256
256
  puts ('obj.class: ' + obj.class.inspect).debug
257
257
  end
258
-
258
+
259
259
  r = @records.find {|x| x[:id] == id}
260
-
260
+
261
261
  if r then
262
-
262
+
263
263
  r[:body].merge!(obj)
264
264
  save() if @autosave
265
-
265
+
266
266
  end
267
-
267
+
268
268
  end
269
-
269
+
270
270
  private
271
-
271
+
272
272
  def find_record(rec, value, x)
273
- r = 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
274
274
  end
275
-
275
+
276
276
  def make_methods()
277
-
277
+
278
278
  # for each summary item create get and set methods
279
-
279
+
280
280
  @summary.each do |key, value|
281
-
281
+
282
282
  define_singleton_method(key) { @summary[key] }
283
-
283
+
284
284
  define_singleton_method (key.to_s + '=').to_sym do |value|
285
285
  @summary[key] = value
286
- end
287
-
286
+ end
287
+
288
288
  end
289
-
289
+
290
290
  @fields = @summary[:schema][/(?<=\()[^\)]+/].split(',').map(&:strip)
291
291
 
292
292
  @fields.each do |x|
293
293
 
294
294
  define_singleton_method ('find_all_by_' + x).to_sym do |value|
295
-
295
+
296
296
  a = @records.select {|rec| find_record(rec[:body], value, x) }
297
-
297
+
298
298
  a.map do |h|
299
299
  RecordX.new(h[:body], self, h[:id], h[:created], h[:last_modified])
300
300
  end
301
-
301
+
302
302
  end
303
303
 
304
304
  define_singleton_method ('find_by_' + x).to_sym do |value|
305
-
305
+
306
306
  h = @records.find {|rec| find_record(rec[:body], value, x) }
307
307
  return nil unless h
308
-
309
- RecordX.new(h[:body], self, h[:id], h[:created], h[:last_modified])
310
-
308
+
309
+ RecordX.new(h[:body], self, h[:id], h[:created], h[:last_modified])
310
+
311
+ end
312
+
313
+ end
314
+
315
+ end
316
+
317
+ def new_summary(schema)
318
+
319
+ @summary = {schema: schema}
320
+
321
+ puts '@summary: ' + @summary.inspect if @debug
322
+ @schema = @summary[:schema]
323
+
324
+ summary_attributes = {
325
+ recordx_type: 'dynarex',
326
+ default_key: schema[/(?<=\()\w+/]
327
+ }
328
+
329
+ puts 'before merge' if @debug
330
+ @summary.merge!(summary_attributes)
331
+
332
+ summary = @summary[:schema][/(?<=\[)[^\]]+/]
333
+
334
+ if summary then
335
+
336
+ summary.split(/ *, */).each do |x|
337
+ @summary[x] = nil unless @summary[x]
311
338
  end
312
339
 
313
340
  end
314
-
341
+
342
+ make_methods()
315
343
  end
316
-
344
+
317
345
  def read(buffer)
318
-
346
+
319
347
  if buffer[0] == '<' then
320
-
348
+
321
349
  parse_xml buffer
322
-
350
+
323
351
  else
324
-
352
+
325
353
  h1 = JSON.parse(buffer, symbolize_names: true)
326
- #puts 'h1:' + h1.inspect if @debug
327
-
354
+ puts 'h1:' + h1.inspect if @debug
355
+
328
356
  h = h1[h1.keys.first]
329
-
357
+
330
358
  @summary = {}
331
-
359
+
332
360
  h[:summary].each do |key, value|
333
-
361
+
334
362
  if %i(recordx_type format_mask schema).include? key then
335
363
  @summary[key] = value
336
- else
364
+ else
337
365
  @summary[key.to_s] = value
338
366
  end
339
-
367
+
340
368
  end
341
-
369
+
342
370
  @records = h[:records].map {|x| x[x.keys.first]}
343
-
371
+
344
372
  end
345
-
373
+
374
+ make_methods()
375
+
346
376
  end
347
-
377
+
348
378
  end
data.tar.gz.sig CHANGED
Binary file
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.5
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -11,74 +11,74 @@ cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
13
  MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
- YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjAwNjIwMDk1OTIyWhcN
15
- MjEwNjIwMDk1OTIyWjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
- cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCcnuff
17
- 5MVmDII05CloWme8XkTcCkGTFTCGqacPAa5803163oHfU0CovEbdSR8KNVXQ0mVz
18
- ZkE1kEi/xlAbZHKZTgJNjzXKcTfW0zNI/1l9Jyz59fjOUgO26oWgEJX1iJBUkzAx
19
- 1jHBvCGvAgKi1gmPovfrnPkXJ4e39Kklay4mrsfRO1qAkyfoUCn8TOc4/xVyB9UV
20
- zpSfryHT41gM3vUyVyfkLsC8St6oI2j6R45YJIL2Hz1UBZsFk8ICn8MKL84b+nyX
21
- YiW3BoOhB5x4M+tORhMqIYwSW///P3ztFVuZCoZsZm7KDlmZ5Q+kbtg2O6WJqOeX
22
- 2CLAag6UYpWUJd9SBDOOLvNAzdzKHOlD/tJQnHrLTJzNSQQZcCLa7xjAob2vooFi
23
- zO7nNoPnRb7MFAdnjEgIPra6GZ6BxSzeWKmkXX6vFCs8Uy8N0ijHyWg4NKDlgHzl
24
- VCS9RW6U/gIhciP3kabmxcu2R67I79UDJU4tf8fYN+7tZLfU7g5S0QLQfrsCAwEA
25
- AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUDodJj5qi
26
- akKU2hOApwE0BzK8lGswJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjExMjE0MTkxMzA1WhcN
15
+ MjIxMjE0MTkxMzA1WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDr8u3b
17
+ GnmbKxnrbY0y31GqwbhURpvc6bArdtA+PLcVgPHAVPUbPxoriPsyUQKcnXD/Ema+
18
+ QYUqHzph0SxI2PYrFdskTIVKQwXdUFGy6eYSW3CHvsXV4e5gg+zmSoW93tm2sd+w
19
+ 7lxgkkxri7KhguwmXpWsTHCfMBHyBXxP/2E2IGaEuyATjUposENy9Mfe7BKDMMAf
20
+ e3k7o6AJx16OmLRKAch0BkEYd0M9TqdYSYjcvKbX/BxSwm3zfz+T0erG56h3D425
21
+ ljBig7CZxCNXJqq2wSzmnVMoattGhCDLCNa9+JMN/G4bGqswnjk/MupSYhTV608s
22
+ jXrQ8yk9YIGrYi3+KW1hT25aS7HEqeFdrPax5/M/2TLyPJ+Yz+2vCm89T92rW6e5
23
+ IMDkjsQZjomhgOFjiTjn81wtr+4jfYCyclV+dFpNP+GHTXes9GtL0wzrSBMtfPkJ
24
+ AE5YlIKE6m2a40k+hhp6v3sRqPldu07L9yWxLGuz7ugiQyLc08jh7ApmnqUCAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUxW2m/eFG
26
+ Ic5LrIOJvXpDgkUIXfUwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
27
  c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
- BgkqhkiG9w0BAQsFAAOCAYEAAp+SekW1hEJtEVytkrrwQlx/7umkgPsiQS18ch7v
29
- sRZBRxLXwFdG0LLmqo1rP0vd+JMDq0DXZVR6bluBGp2NEsFD9XyBs7Rsz/+4SEQ4
30
- 4eLGxTkU8+expljNlWRAFZdyt1RPHbs0LScrjBZaVzfBJtLXLcl8CWhyqM4OPTHv
31
- R18J5Arlbd4O0PfYXQ08UtoSsNrqf77o24nPuXMXKMwPhmaCpuj0Lo4zBkha9EO8
32
- geBYBisigKBlddJirP391twfnfQS0Qx/j7LgkYgXAuD3Z0Ma1Z9E3HzuTvXernzM
33
- sECCiG3ji+1NriaIv8rb6mG/Zbdjv8ydoFAj+M+0qbE+ZARNlBHKI7F7lYQJc0cT
34
- vsTqpllA3ZpXxVzmfiJMahAv08eTnWbgCSRNbCm6mq6I4hyAiudbxcc+DPzLbrxx
35
- dwbAN6/wokoLVZAiMRG1vZlI6RhtSOTHvFHbfBE5JI9rhjRtui8yeV+t8iI8G4Zs
36
- 2NszuYzdlVfzlrUiPWY5jL9P
28
+ BgkqhkiG9w0BAQsFAAOCAYEANUi0iJeImMVeBp8DW0SYTE7fi64K55TzV82BUWTx
29
+ kGmMfNyBDXkRPVqfZeubCNOUBhpe3zpziO26TIzZ+7lqXkTOWDNkGdYVNMp2rbLd
30
+ exukFDYOuLStjGnAl5KUfIj3fTKC9T9HGDvSaJec2KwnY2RIQhal8FGicLX5kkUx
31
+ BO3X5S9uHFZP2HY0VZq4CpGvuhz3ikCWxRLSVfypsJR9EXod8SkPpHhtP9JHUfAV
32
+ 7+dqSt7LPuHaYoiEWezPyfaZEn0oHFTFkLaDPtUDN1UvkMNaDwIQ9UBeQrscz3rm
33
+ 8tXnf5YUbiM9Ngft4jVa4FjEqjARjRB/l4OlO8cxIHZG+7KU7PhlbsqT/2ISjo+f
34
+ k0RwIfy2uAZ/no0qaVtnTkbeFBw4JKNnH5jrNEMUyEsbWkkeSg67vCHjZ+YLxdgn
35
+ 9pK+pqislEMFrWscGeMsc6YMS7ALxEujTuwTWyxmWAXnYft4ff2O1Zh2sPmdOlgf
36
+ camg7d8q+VZZzAtz0cFc4pip
37
37
  -----END CERTIFICATE-----
38
- date: 2021-02-20 00:00:00.000000000 Z
38
+ date: 2022-02-09 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
- name: recordx
41
+ name: kvx
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '0.5'
46
+ version: '1.0'
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: 0.5.5
49
+ version: 1.0.1
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
54
  - - "~>"
55
55
  - !ruby/object:Gem::Version
56
- version: '0.5'
56
+ version: '1.0'
57
57
  - - ">="
58
58
  - !ruby/object:Gem::Version
59
- version: 0.5.5
59
+ version: 1.0.1
60
60
  - !ruby/object:Gem::Dependency
61
- name: rxfhelper
61
+ name: recordx
62
62
  requirement: !ruby/object:Gem::Requirement
63
63
  requirements:
64
64
  - - "~>"
65
65
  - !ruby/object:Gem::Version
66
- version: '1.1'
66
+ version: '0.5'
67
67
  - - ">="
68
68
  - !ruby/object:Gem::Version
69
- version: 1.1.3
69
+ version: 0.5.5
70
70
  type: :runtime
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
73
73
  requirements:
74
74
  - - "~>"
75
75
  - !ruby/object:Gem::Version
76
- version: '1.1'
76
+ version: '0.5'
77
77
  - - ">="
78
78
  - !ruby/object:Gem::Version
79
- version: 1.1.3
79
+ version: 0.5.5
80
80
  description:
81
- email: james@jamesrobertson.eu
81
+ email: digital.robertson@gmail.com
82
82
  executables: []
83
83
  extensions: []
84
84
  extra_rdoc_files: []
metadata.gz.sig CHANGED
Binary file