ree_lib 1.0.0 → 1.0.1

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: be5ae7ea8b9a8508ae04cc0caf741b87bc67b974c0a14d6cfbabef16607e1c81
4
- data.tar.gz: fc7feb07cf62419e03262e4910fa9d02ac8c1b0eed9f60f76a4282f61357985f
3
+ metadata.gz: 3b78b5d2573b0674dc4f2eae170e408ac3f2fe18bb735be4fdd5ba8bbb7950e6
4
+ data.tar.gz: 253c3e28a517d3d14dd3110cd774f5ae4086c1ba5e0d19110de9f7d8c6f05bd8
5
5
  SHA512:
6
- metadata.gz: ff19ea51129ec5d6f3fdace442c2264fc8af6071e9e92f769916c3faea5da8aa9e59c04bcb94f6e063f0b363407d2c8b64ba7ce8136c750831b0ae60337d356d
7
- data.tar.gz: 777a59bf5a429a99d9f0c3e749d79a8af0223a08a1028cbae5d74d759fa6519bc12b48c36dc016373337e51d1f1427aca116acb0ccc26aaeac1a762891d28cd7
6
+ metadata.gz: c083f3c6b152024b97e90af5294db3aa0703fa7b0c50747de9596cbe7b4da7c87d8e190e68c25acc4a039ad00a7be549b2d0ad61bb05efd7d94cd6528d3dfecd
7
+ data.tar.gz: a337f004cc876ca1b1be5a0fb2187767d568a45a05b2e8926e4490acb34e7354b72f3c9ff453f9980043e38a56a09f8796da4ea0f92d938c762908370ba9438a
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ree_lib (1.0.0)
4
+ ree_lib (1.0.1)
5
5
  binding_of_caller (~> 1.0.0)
6
6
  i18n (~> 1.12.0)
7
7
  loofah (~> 2.18.0)
@@ -36,11 +36,11 @@ GEM
36
36
  crass (~> 1.0.2)
37
37
  nokogiri (>= 1.5.9)
38
38
  msgpack (1.5.3)
39
- nokogiri (1.13.7-x86_64-darwin)
39
+ nokogiri (1.13.8-x86_64-darwin)
40
40
  racc (~> 1.4)
41
- nokogiri (1.13.7-x86_64-linux)
41
+ nokogiri (1.13.8-x86_64-linux)
42
42
  racc (~> 1.4)
43
- oj (3.13.17)
43
+ oj (3.13.19)
44
44
  pg (1.4.1)
45
45
  public_suffix (4.0.7)
46
46
  racc (1.6.0)
@@ -22,80 +22,83 @@ module ReeEnum
22
22
  Ree.container.compile(dsl.package, name)
23
23
  end
24
24
 
25
- def register_as_mapper_type
26
- mapper_factory = ReeMapper.get_mapper_factory(
27
- Object.const_get(self.name.split('::').first)
28
- )
25
+ def type_for_mapper
26
+ @type_for_mapper ||= begin
27
+ klass = Class.new(ReeMapper::AbstractType) do
28
+ def initialize(enum)
29
+ @enum = enum
30
+ end
29
31
 
30
- klass = Class.new(ReeMapper::AbstractType) do
31
- def initialize(enum)
32
- @enum = enum
33
- end
32
+ contract(
33
+ ReeEnum::Value,
34
+ Kwargs[
35
+ role: Nilor[Symbol, ArrayOf[Symbol]]
36
+ ] => String
37
+ )
38
+ def serialize(value, role: nil)
39
+ value.to_s
40
+ end
34
41
 
35
- contract(
36
- ReeEnum::Value,
37
- Kwargs[
38
- role: Nilor[Symbol, ArrayOf[Symbol]]
39
- ] => String
40
- )
41
- def serialize(value, role: nil)
42
- value.to_s
43
- end
42
+ contract(
43
+ Any,
44
+ Kwargs[
45
+ role: Nilor[Symbol, ArrayOf[Symbol]]
46
+ ] => ReeEnum::Value
47
+ ).throws(ReeMapper::CoercionError)
48
+ def cast(value, role: nil)
49
+ if value.is_a?(String)
50
+ enum_val = @enum.values.all.detect { |v| v.to_s == value }
44
51
 
45
- contract(
46
- Any,
47
- Kwargs[
48
- role: Nilor[Symbol, ArrayOf[Symbol]]
49
- ] => ReeEnum::Value
50
- ).throws(ReeMapper::CoercionError)
51
- def cast(value, role: nil)
52
- if value.is_a?(String)
53
- enum_val = @enum.values.all.detect { |v| v.to_s == value }
54
-
55
- if !enum_val
56
- raise ReeMapper::CoercionError, "should be one of #{@enum.values.all.map(&:to_s).inspect}"
57
- end
52
+ if !enum_val
53
+ raise ReeMapper::CoercionError, "should be one of #{@enum.values.all.map(&:to_s).inspect}"
54
+ end
55
+
56
+ enum_val
57
+ elsif value.is_a?(Integer)
58
+ enum_val = @enum.values.all.detect { |v| v.to_i == value }
58
59
 
59
- enum_val
60
- elsif value.is_a?(Integer)
61
- enum_val = @enum.values.all.detect { |v| v.to_i == value }
60
+ if !enum_val
61
+ raise ReeMapper::CoercionError, "should be one of #{@enum.values.all.map(&:to_s).inspect}"
62
+ end
62
63
 
63
- if !enum_val
64
+ enum_val
65
+ else
64
66
  raise ReeMapper::CoercionError, "should be one of #{@enum.values.all.map(&:to_s).inspect}"
65
67
  end
68
+ end
66
69
 
67
- enum_val
68
- else
69
- raise ReeMapper::CoercionError, "should be one of #{@enum.values.all.map(&:to_s).inspect}"
70
+ contract(
71
+ ReeEnum::Value,
72
+ Kwargs[
73
+ role: Nilor[Symbol, ArrayOf[Symbol]]
74
+ ] => Integer
75
+ )
76
+ def db_dump(value, role: nil)
77
+ value.to_i
70
78
  end
71
- end
72
79
 
73
- contract(
74
- ReeEnum::Value,
75
- Kwargs[
76
- role: Nilor[Symbol, ArrayOf[Symbol]]
77
- ] => Integer
78
- )
79
- def db_dump(value, role: nil)
80
- value.to_i
80
+ contract(
81
+ Integer,
82
+ Kwargs[
83
+ role: Nilor[Symbol, ArrayOf[Symbol]]
84
+ ] => ReeEnum::Value
85
+ ).throws(ReeMapper::TypeError)
86
+ def db_load(value, role: nil)
87
+ cast(value, role: role)
88
+ end
81
89
  end
82
90
 
83
- contract(
84
- Integer,
85
- Kwargs[
86
- role: Nilor[Symbol, ArrayOf[Symbol]]
87
- ] => ReeEnum::Value
88
- ).throws(ReeMapper::TypeError)
89
- def db_load(value, role: nil)
90
- cast(value, role: role)
91
- end
91
+ klass.new(self)
92
92
  end
93
+ end
94
+
95
+ def register_as_mapper_type
96
+ mapper_factory = ReeMapper.get_mapper_factory(
97
+ Object.const_get(self.name.split('::').first)
98
+ )
93
99
 
94
- mapper_factory.register(
95
- self.enum_name,
96
- ReeMapper::Mapper.build(
97
- mapper_factory.strategies, klass.new(self)
98
- )
100
+ mapper_factory.register_type(
101
+ self.enum_name, type_for_mapper
99
102
  )
100
103
  end
101
104
  end
@@ -11,6 +11,14 @@ class ReeMapper::MapperFactory
11
11
  string: ReeMapper::StringKeyHashOutput
12
12
  }.freeze
13
13
 
14
+ contract(Symbol, Any => Class).throws(ArgumentError)
15
+ def self.register_type(name, object_type)
16
+ register(
17
+ name,
18
+ ReeMapper::Mapper.build(strategies, object_type)
19
+ )
20
+ end
21
+
14
22
  contract(Symbol, Any => Class).throws(ArgumentError)
15
23
  def self.register(name, type)
16
24
  raise ArgumentError, "name of mapper type should not include `?`" if name.to_s.end_with?('?')
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ReeLib
4
- VERSION = "1.0.0"
4
+ VERSION = "1.0.1"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ree_lib
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ruslan Gatiyatov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-07-23 00:00:00.000000000 Z
11
+ date: 2022-08-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ree