coaster 1.3.14 → 1.3.15

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: 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