choron_support 0.1.4 → 0.1.5

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: 5aec7e221e4fc870c2cd989203b23d977c361a55830d4f3ec54732254ef9d68c
4
- data.tar.gz: 7ce392003f8f967ac35019e436dd29230a36d1b2232c5676b98f86820535fcb9
3
+ metadata.gz: ee00806dd922746ab7a93c6835f09ddc18d78f39f34c5498abd00faad0f02948
4
+ data.tar.gz: 00047a1d9e08362f7cf476518b5c67d93f490f5058260ec5abee3d363c9ccffd
5
5
  SHA512:
6
- metadata.gz: 3a1eb4b85d33c2e40060b1b4d9941f432a06ba034dc6f8dee696817969bb4da9b7456ceac7be5bce90ce090ffd02e995c593587f0894bfd0f7645017d777b496
7
- data.tar.gz: 7f88d5b647058c03b70f0e95fb02df0b757ea11c2c5c2493a9da4346c876d81713e4c3a7576514c03a9471f5e27f31e1a9eb56febe3aeb5353cefa5e44132148
6
+ metadata.gz: 5142e115d399be76589e39bdf21ea33944a8cd2bc1f3f2c5bcaba15aca77ec9244d27b48325d46a3eeea6f611cc5ecc08abc0e31a920b238a0ec3ec13fbba4c7
7
+ data.tar.gz: c3dadd661f9261167656b268acddf945671dea4cf9ecad9b85d12d42bfc9f11241045ec080fe58a0c39a49443ad8e69901ddf6ecb36885a6a95127b2070ac770
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- choron_support (0.1.4)
4
+ choron_support (0.1.5)
5
5
  activesupport
6
6
 
7
7
  GEM
@@ -3,13 +3,19 @@ require_relative "props/ext/relation"
3
3
  require_relative "props/ext/hash"
4
4
  module ChoronSupport
5
5
  module AsProps
6
+ class NameError < StandardError; end
7
+ # @param [Symbol, String, nil] type_symbol どのPropsクラスを利用してPropsを生成するかを指定するシンボル。nilのときはデフォルトのPropsクラスを利用する。
8
+ # @param [Hash] params その他のパラメータ。camel: false を指定すると自動でキャメライズしない。
9
+ # @return [Hash]
6
10
  def as_props(type_symbol = nil, **params)
7
11
  serializer = self.__get_props_class(type_symbol, **params)
8
12
 
13
+ skip_camel = (params[:camel] == false)
14
+ pass_params = params.except(:camel)
9
15
  if serializer.nil?
10
- self.as_json
16
+ skip_camel ? self.as_json : self.as_json.as_camel
11
17
  else
12
- serializer.as_props(**params)
18
+ skip_camel ? serializer.as_props(**pass_params) : serializer.as_props(**pass_params).as_camel
13
19
  end
14
20
  end
15
21
 
@@ -39,15 +45,19 @@ module ChoronSupport
39
45
 
40
46
  props_class.new(self)
41
47
  rescue *rescue_errors
42
- return nil
48
+ if type_symbol.blank?
49
+ return nil
50
+ else
51
+ raise ChoronSupport::AsProps::NameError, "Props class not found: #{props_class_name}. Got type symbol: #{type_symbol}."
52
+ end
43
53
  end
44
54
  end
45
55
 
46
56
  def rescue_errors
47
57
  if defined?(Zeitwerk)
48
- [NameError, Zeitwerk::NameError]
58
+ [::NameError, Zeitwerk::NameError]
49
59
  else
50
- [NameError]
60
+ [::NameError]
51
61
  end
52
62
  end
53
63
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ChoronSupport
4
- VERSION = "0.1.4"
4
+ VERSION = "0.1.5"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: choron_support
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - mksava
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-01-22 00:00:00.000000000 Z
11
+ date: 2023-03-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport