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 +4 -4
- data/lib/coaster/serialized_properties.rb +1 -1
- data/lib/coaster/util.rb +22 -0
- data/lib/coaster/version.rb +1 -1
- data/test/test_util.rb +20 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6a455bb3b4fa7227fc1b8e533923060618ba10ba6f72acfbb131d4059f8d9296
|
4
|
+
data.tar.gz: a6d60d226e654722299273b3b0314f91f5a6a78d69e651c0e2b9cea58869b95e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
|
data/lib/coaster/util.rb
ADDED
@@ -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
|
data/lib/coaster/version.rb
CHANGED
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.
|
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-
|
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
|