dynamini 1.5.6 → 1.6.0

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 (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/dynamini/base.rb +24 -14
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0e427114dd548cfe317e0580dcd3ec5ed6343ea8
4
- data.tar.gz: ceb92ada2631b6e7151ed5f99d4dff1aab5c592e
3
+ metadata.gz: 3903f7963b95f4b64f0eae0f6c5824b4af52d17a
4
+ data.tar.gz: 9f6aea2a2ada637f1c9131aeb9917c5487fdb64f
5
5
  SHA512:
6
- metadata.gz: 9e8de3beb6c4d2cf9c82017b6e938da40de1571cd39ca9069e65846993c0d8720fdaf2a504acc4bbb34982e735d4d6513b37ff170499885a981cf34320a1dbb3
7
- data.tar.gz: cfb3074cda731b09b8bf4a3ac4fa85beb1da8d5cf3b0c4eb43550bd7da1abdfb1c5641283868160e780771ca47d6a03c42e097325b1f337df3540218f101c06c
6
+ metadata.gz: a4c2c56ad2559690c694b4c20fe33a97a28f4bfccb05198464ee2179153a7ed2fdaab3511315b46a6788b160d1a28c1c3f66980ef248e7d12c3d6647073c295c
7
+ data.tar.gz: 826c9823fcc5320fe67495fc06d07d0c3af37e339eeccc70bdd5d68187594d91d171d7fe22ffe7aac64dba003ad17f03af5424a4430024deceb64db3e29fe639
data/lib/dynamini/base.rb CHANGED
@@ -7,16 +7,22 @@ module Dynamini
7
7
  BATCH_SIZE = 25
8
8
  GETTER_PROCS = {
9
9
  integer: proc { |v| v.to_i },
10
- datetime: proc { |v| Time.at(v.to_f) },
10
+ date: proc { |v| v.is_a?(Date) ? v : Time.at(v).to_date },
11
+ time: proc { |v| Time.at(v.to_f) },
11
12
  float: proc { |v| v.to_f },
12
13
  symbol: proc { |v| v.to_sym },
13
14
  string: proc { |v| v },
14
- boolean: proc { |v| [true, 'true', '1', '1.0'].include? v },
15
- array: proc { |v| v ? (v.is_a?(String) ? JSON.parse(v) : v) : [] }
15
+ boolean: proc { |v| v }
16
16
  }
17
+
17
18
  SETTER_PROCS = {
18
- datetime: proc { |v| v.to_f },
19
- array: proc { |v| v if v.is_a? Array }
19
+ integer: proc { |v| v.to_i },
20
+ time: proc { |v| v.to_f },
21
+ float: proc { |v| v.to_f },
22
+ symbol: proc { |v| v.to_s },
23
+ string: proc { |v| v },
24
+ boolean: proc { |v| v },
25
+ date: proc { |v| v.to_time.to_f }
20
26
  }
21
27
 
22
28
  class << self
@@ -366,7 +372,12 @@ module Dynamini
366
372
  fail 'Unsupported data type: ' + format_class.to_s if proc.nil?
367
373
  define_method(column) do
368
374
  if @attributes.key?(column)
369
- proc.call(read_attribute(column))
375
+ v = read_attribute(column)
376
+ if v.is_a? Array
377
+ v.map{ |e| proc.call(e) }
378
+ else
379
+ proc.call(read_attribute(column))
380
+ end
370
381
  else
371
382
  options[:default] || nil
372
383
  end
@@ -376,14 +387,13 @@ module Dynamini
376
387
  def self.define_handled_setter(column, format_class)
377
388
  setter_symbol = (column.to_s + '=').to_sym
378
389
  proc = SETTER_PROCS[format_class]
379
- if proc
380
- define_method(setter_symbol) do |value|
390
+ fail 'Unsupported data type: ' + format_class.to_s if proc.nil?
391
+ define_method(setter_symbol) do |value|
392
+ if value.is_a? Array
393
+ write_attribute(column, value.map{ |e| proc.call(e) })
394
+ else
381
395
  write_attribute(column, proc.call(value))
382
396
  end
383
- else
384
- define_method(setter_symbol) do |value|
385
- write_attribute(column, value)
386
- end
387
397
  end
388
398
  end
389
399
 
@@ -407,7 +417,7 @@ module Dynamini
407
417
 
408
418
  #### Default class macros
409
419
 
410
- handle :updated_at, :datetime
411
- handle :created_at, :datetime
420
+ handle :updated_at, :time
421
+ handle :created_at, :time
412
422
  end
413
423
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dynamini
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.6
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Greg Ward
@@ -15,7 +15,7 @@ authors:
15
15
  autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
- date: 2015-10-22 00:00:00.000000000 Z
18
+ date: 2015-10-23 00:00:00.000000000 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: activemodel