coaster 1.3.14 → 1.3.15

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a813e9a52472c914ad88ee95a1022645ffa3a93a2e921aebbb1ab5130b967f59
4
- data.tar.gz: c1e74b7ff24af1484c97370c9eef806ffe0a7ca6ad140e818024ab110b4a69bc
3
+ metadata.gz: 6a455bb3b4fa7227fc1b8e533923060618ba10ba6f72acfbb131d4059f8d9296
4
+ data.tar.gz: a6d60d226e654722299273b3b0314f91f5a6a78d69e651c0e2b9cea58869b95e
5
5
  SHA512:
6
- metadata.gz: 90b871d5de0b4302cd686db1e1f4c3e11b39e1546420e61dd868b015bb47b20c84867f31d05ed7f274798efe24b6933dbfde42a54ae731478314946747441f7f
7
- data.tar.gz: 5253a5d4a178e34c98193a296891ebb32e882531b802a65346b466c00a3e2961bf6400564c50202a9a15ac704ede90d7ccca47d66bc20636c6e3ce0ac32d4dfe
6
+ metadata.gz: ef160415d47e28332c0fbe3bccacefdfd5aa5b5353bfb70526d2ab5639d586dafab8caa75977715985cf150f7bdba4b2e4f9ec22b1318d6a5a5a54bbdab8b0a5
7
+ data.tar.gz: 8bb9950ae88dc38d6088e07be06b18fcc5f6b1963b7406369f494856e5b41fd02f1e83ec0f82714f91f9984c3ff68f889cbca7053efaaed83948137f9e646377
@@ -40,7 +40,7 @@ module Coaster
40
40
  prop_hash = {type: type, getter: getter, setter: setter, setter_callback: setter_callback, default: default}.merge(key)
41
41
  prop_hash.delete(:key)
42
42
  end
43
- serialized_property(serialize_column, key_name, prop_hash)
43
+ serialized_property(serialize_column, key_name, **prop_hash)
44
44
  end
45
45
  end
46
46
 
@@ -0,0 +1,22 @@
1
+ module Coaster
2
+ module Util
3
+ FLATTEN_HASH_DELIMITER = '.'.freeze
4
+
5
+ class << self
6
+ def flatten_hashify(object, delimiter: FLATTEN_HASH_DELIMITER, breadcrumbs: [])
7
+ case object
8
+ when Hash
9
+ object.each_with_object({}) do |(key, value), memo|
10
+ memo.merge!(flatten_hashify(value, breadcrumbs: breadcrumbs + [key]))
11
+ end
12
+ when Array
13
+ object.each.with_index(1).with_object({}) do |(element, ix), memo|
14
+ memo.merge!(flatten_hashify(element, breadcrumbs: breadcrumbs + [ix]))
15
+ end
16
+ else
17
+ {breadcrumbs.join(delimiter) => object}
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,3 +1,3 @@
1
1
  module Coaster
2
- VERSION = '1.3.14'
2
+ VERSION = '1.3.15'
3
3
  end
data/test/test_util.rb ADDED
@@ -0,0 +1,20 @@
1
+ require 'test_helper'
2
+ require 'minitest/autorun'
3
+ require 'coaster/util'
4
+
5
+ module Coaster
6
+ class TestUtil < Minitest::Test
7
+ def setup
8
+ end
9
+
10
+ def teardown
11
+ end
12
+
13
+ def test_flatten_hashify
14
+ res = Util.flatten_hashify({a: [1], b: {aa: 1, bb: [2, 1]}})
15
+ assert_equal({"a.1"=>1, "b.aa"=>1, "b.bb.1"=>2, "b.bb.2"=>1}, res)
16
+ res = Util.flatten_hashify([{a: 1}, 22, [33, 44], {b: {c: [33, {d: 4}]}}])
17
+ assert_equal({"1.a"=>1, "2"=>22, "3.1"=>33, "3.2"=>44, "4.b.c.1"=>33, "4.b.c.2.d"=>4}, res)
18
+ end
19
+ end
20
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coaster
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.14
4
+ version: 1.3.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - buzz jung
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-12 00:00:00.000000000 Z
11
+ date: 2022-08-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: i18n
@@ -158,6 +158,7 @@ files:
158
158
  - lib/coaster/rails_ext.rb
159
159
  - lib/coaster/rails_ext/backtrace_cleaner.rb
160
160
  - lib/coaster/serialized_properties.rb
161
+ - lib/coaster/util.rb
161
162
  - lib/coaster/version.rb
162
163
  - test/locales/en.yml
163
164
  - test/test_backtrace.rb
@@ -165,6 +166,7 @@ files:
165
166
  - test/test_month.rb
166
167
  - test/test_object_translation.rb
167
168
  - test/test_standard_error.rb
169
+ - test/test_util.rb
168
170
  homepage: http://github.com/frograms/coaster
169
171
  licenses:
170
172
  - MIT
@@ -195,3 +197,4 @@ test_files:
195
197
  - test/test_month.rb
196
198
  - test/test_object_translation.rb
197
199
  - test/test_standard_error.rb
200
+ - test/test_util.rb