ree_lib 1.0.72 → 1.0.73

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: 0421ad28472f902b4c53091515c749bdcb6aba9ef96ed42009abe27d115edf48
4
- data.tar.gz: 3909bfecb3e92e05708a9be5effb672fc8042e2f53ed4aadb426539f0eba8574
3
+ metadata.gz: 8bc7c01750d09b6274eabf44aa42ab5df1638372eed12a81bf2f79d09caf2920
4
+ data.tar.gz: 8dd947819db285b9ead46579f4eacb3b482a27fa525f48e0f997f21ac230744e
5
5
  SHA512:
6
- metadata.gz: bb696f99d8af84de496f0e6a3bf616256853302d952409832fd89eb24830c0f29cb2cead19b245eee883a2c9dc7d358633bccc308be56369c2d8aeb569a66c7d
7
- data.tar.gz: 0accc79d4259f341f4fbf6306103e28521b070119b2ee6be3e7bb98e08802b78ad857f476524a128d9c51cd7ca02fb59298ac70886b70a1304de8d39455d13d5
6
+ metadata.gz: 498b93f53f71563223d74404aa958ea60618c3513c21a9344ae6c18bce4fd6664113eb47aae7f4626577c632417f355a09252411ebe244921c1443f5846c8e3c
7
+ data.tar.gz: d1c3ac12551051f7f9b5f71e785e4cbe22bc5854863b8e406c6b3f950ed486043c9f9c2fffc88ce2c95df471aab47f3c3401af2b6c353bffb2c22bd24d867619
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ree_lib (1.0.72)
4
+ ree_lib (1.0.73)
5
5
  binding_of_caller (~> 1.0.0)
6
6
  i18n (~> 1.12.0)
7
7
  loofah (~> 2.18.0)
@@ -51,7 +51,7 @@ GEM
51
51
  rack (>= 1.3)
52
52
  rainbow (3.1.1)
53
53
  rake (13.0.6)
54
- ree (1.0.29)
54
+ ree (1.0.31)
55
55
  commander (~> 4.6.0)
56
56
  rexml (3.2.5)
57
57
  roda (3.58.0)
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+ require_relative "value"
3
+
4
+ class ReeEnum::BaseEnumMapper < ReeMapper::AbstractType
5
+ def initialize(enum)
6
+ @enum = enum
7
+ end
8
+
9
+ contract(
10
+ ReeEnum::Value,
11
+ Kwargs[
12
+ name: String,
13
+ role: Nilor[Symbol, ArrayOf[Symbol]]
14
+ ] => Or[Integer, String]
15
+ )
16
+ def db_dump(value, name:, role: nil)
17
+ value.mapped_value
18
+ end
19
+
20
+ contract(
21
+ Or[Integer, String],
22
+ Kwargs[
23
+ name: String,
24
+ role: Nilor[Symbol, ArrayOf[Symbol]]
25
+ ] => ReeEnum::Value
26
+ ).throws(ReeMapper::CoercionError)
27
+ def db_load(value, name:, role: nil)
28
+ enum_val = @enum.get_values.by_mapped_value(value)
29
+
30
+ if !enum_val
31
+ raise ReeMapper::CoercionError, "`#{name}` should be one of #{enum_inspection}"
32
+ end
33
+
34
+ enum_val
35
+ end
36
+
37
+ private
38
+
39
+ def enum_inspection
40
+ @enum_inspection ||= truncate(@enum.get_values.each.map(&:to_s).inspect)
41
+ end
42
+
43
+ def truncate(str, limit = 180)
44
+ return str if str.length <= limit
45
+ "#{str[0..limit]}..."
46
+ end
47
+ end
@@ -1,5 +1,9 @@
1
+ # frozen_string_literal: true
1
2
  package_require 'ree_swagger/functions/register_type'
2
3
 
4
+ require_relative 'integer_value_enum_mapper'
5
+ require_relative 'string_value_enum_mapper'
6
+
3
7
  module ReeEnum
4
8
  module DSL
5
9
  def self.included(base)
@@ -27,100 +31,32 @@ module ReeEnum
27
31
  end
28
32
 
29
33
  def type_for_mapper
30
- @type_for_mapper ||= begin
31
- klass = Class.new(ReeMapper::AbstractType) do
32
- def initialize(enum)
33
- @enum = enum
34
- end
35
-
36
- contract(
37
- ReeEnum::Value,
38
- Kwargs[
39
- name: String,
40
- role: Nilor[Symbol, ArrayOf[Symbol]]
41
- ] => String
42
- )
43
- def serialize(value, name:, role: nil)
44
- value.to_s
45
- end
46
-
47
- contract(
48
- Any,
49
- Kwargs[
50
- name: String,
51
- role: Nilor[Symbol, ArrayOf[Symbol]]
52
- ] => ReeEnum::Value
53
- ).throws(ReeMapper::CoercionError)
54
- def cast(value, name:, role: nil)
55
- enum_value = if value.is_a?(String)
56
- @enum.get_values.by_value(value)
57
- elsif value.is_a?(ReeEnum::Value)
58
- @enum.get_values.each.find { _1 == value }
59
- end
60
-
61
- if enum_value.nil?
62
- raise ReeMapper::CoercionError, "`#{name}` should be one of #{enum_inspection}"
63
- end
64
-
65
- enum_value
66
- end
67
-
68
- contract(
69
- ReeEnum::Value,
70
- Kwargs[
71
- name: String,
72
- role: Nilor[Symbol, ArrayOf[Symbol]]
73
- ] => Or[Integer, String]
74
- )
75
- def db_dump(value, name:, role: nil)
76
- value.mapped_value
77
- end
78
-
79
- contract(
80
- Or[Integer, String],
81
- Kwargs[
82
- name: String,
83
- role: Nilor[Symbol, ArrayOf[Symbol]]
84
- ] => ReeEnum::Value
85
- ).throws(ReeMapper::CoercionError)
86
- def db_load(value, name:, role: nil)
87
- enum_val = @enum.get_values.by_mapped_value(value)
88
-
89
- if !enum_val
90
- raise ReeMapper::CoercionError, "`#{name}` should be one of #{enum_inspection}"
91
- end
92
-
93
- enum_val
94
- end
95
-
96
- private
97
-
98
- def enum_inspection
99
- @enum_inspect ||= truncate(@enum.get_values.each.map(&:to_s).inspect)
100
- end
101
-
102
- def truncate(str, limit = 180)
103
- return str if str.length <= limit
104
- "#{str[0..limit]}..."
105
- end
106
- end
107
-
108
- klass.new(self)
34
+ return @type_for_mapper if defined? @type_for_mapper
35
+
36
+ value_type = get_values.value_type
37
+
38
+ klass = if value_type == String
39
+ StringValueEnumMapper
40
+ elsif value_type == Integer
41
+ IntegerValueEnumMapper
42
+ else
43
+ raise NotImplementedError, "value_type #{value_type} is not supported"
109
44
  end
45
+
46
+ @type_for_mapper = klass.new(self)
110
47
  end
111
48
 
112
49
  def register_as_swagger_type
113
50
  swagger_type_registrator = ReeSwagger::RegisterType.new
114
51
 
52
+ definition = swagger_definition
53
+
115
54
  [:casters, :serializers].each do |kind|
116
55
  swagger_type_registrator.call(
117
56
  kind,
118
57
  type_for_mapper.class,
119
58
  ->(*) {
120
- {
121
- type: 'string',
122
- enum: get_values.each.map(&:to_s)
123
- }
59
+ definition
124
60
  }
125
61
  )
126
62
  end
@@ -137,6 +73,23 @@ module ReeEnum
137
73
  self.get_enum_name, type_for_mapper
138
74
  )
139
75
  end
76
+
77
+ def swagger_definition
78
+ value_type = get_values.value_type
79
+
80
+ type = if value_type == String
81
+ "string"
82
+ elsif value_type == Integer
83
+ "integer"
84
+ else
85
+ raise NotImplementedError, "value_type #{value_type} is not supported"
86
+ end
87
+
88
+ {
89
+ type: type,
90
+ enum: get_values.each.map(&:value)
91
+ }
92
+ end
140
93
  end
141
94
  end
142
95
  end
@@ -29,8 +29,9 @@ module ReeEnum::Enumerable
29
29
  @values&.enum_name
30
30
  end
31
31
 
32
- def val(value, mapped_value = value.to_s, method: value.to_sym)
33
- value = value.to_s
32
+ def val(value, mapped_value = nil, method: value.to_s.to_sym)
33
+ value = value.to_s if value.is_a?(Symbol)
34
+ mapped_value ||= value
34
35
 
35
36
  if RESTRICTED_METHODS.include?(method)
36
37
  raise ArgumentError.new("#{method.inspect} is not allowed as enum method")
@@ -38,13 +39,15 @@ module ReeEnum::Enumerable
38
39
 
39
40
  enum_value = @values.add(value, mapped_value, method)
40
41
 
41
- define_method(enum_value.method) do
42
- get_values.by_value(enum_value.value)
43
- end
42
+ class_eval(<<~RUBY, __FILE__, __LINE__ + 1)
43
+ def #{method}
44
+ get_values.by_value(#{value.inspect}.freeze)
45
+ end
44
46
 
45
- define_singleton_method(enum_value.method) do
46
- get_values.by_value(enum_value.value)
47
- end
47
+ def self.#{method}
48
+ get_values.by_value(#{value.inspect}.freeze)
49
+ end
50
+ RUBY
48
51
 
49
52
  enum_value
50
53
  end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+ require_relative "base_enum_mapper"
3
+
4
+ class ReeEnum::IntegerValueEnumMapper < ReeEnum::BaseEnumMapper
5
+ contract(
6
+ ReeEnum::Value,
7
+ Kwargs[
8
+ name: String,
9
+ role: Nilor[Symbol, ArrayOf[Symbol]]
10
+ ] => Integer
11
+ )
12
+ def serialize(value, name:, role: nil)
13
+ value.value
14
+ end
15
+
16
+ contract(
17
+ Any,
18
+ Kwargs[
19
+ name: String,
20
+ role: Nilor[Symbol, ArrayOf[Symbol]]
21
+ ] => ReeEnum::Value
22
+ ).throws(ReeMapper::CoercionError)
23
+ def cast(value, name:, role: nil)
24
+ enum_value = case value
25
+ when Integer
26
+ @enum.get_values.by_value(value)
27
+ when String
28
+ value = Integer(value, exception: false)
29
+ if !value.nil?
30
+ @enum.get_values.by_value(value)
31
+ end
32
+ when ReeEnum::Value
33
+ @enum.get_values.each.find { _1 == value }
34
+ end
35
+
36
+ if enum_value.nil?
37
+ raise ReeMapper::CoercionError, "`#{name}` should be one of #{enum_inspection}"
38
+ end
39
+
40
+ enum_value
41
+ end
42
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+ require_relative "base_enum_mapper"
3
+
4
+ class ReeEnum::StringValueEnumMapper < ReeEnum::BaseEnumMapper
5
+ contract(
6
+ ReeEnum::Value,
7
+ Kwargs[
8
+ name: String,
9
+ role: Nilor[Symbol, ArrayOf[Symbol]]
10
+ ] => String
11
+ )
12
+ def serialize(value, name:, role: nil)
13
+ value.value
14
+ end
15
+
16
+ contract(
17
+ Any,
18
+ Kwargs[
19
+ name: String,
20
+ role: Nilor[Symbol, ArrayOf[Symbol]]
21
+ ] => ReeEnum::Value
22
+ ).throws(ReeMapper::CoercionError)
23
+ def cast(value, name:, role: nil)
24
+ enum_value = case value
25
+ when String
26
+ @enum.get_values.by_value(value)
27
+ when ReeEnum::Value
28
+ @enum.get_values.each.find { _1 == value }
29
+ end
30
+
31
+ if enum_value.nil?
32
+ raise ReeMapper::CoercionError, "`#{name}` should be one of #{enum_inspection}"
33
+ end
34
+
35
+ enum_value
36
+ end
37
+ end
@@ -3,7 +3,7 @@
3
3
  class ReeEnum::Value
4
4
  attr_reader :enum_class, :enum_name, :value, :method, :mapped_value
5
5
 
6
- contract(Class, Symbol, String, Or[Integer, String], Symbol => Any)
6
+ contract(Class, Symbol, Or[String, Integer], Or[Integer, String], Symbol => Any)
7
7
  def initialize(enum_class, enum_name, value, mapped_value, method)
8
8
  @enum_class = enum_class
9
9
  @enum_name = enum_name
@@ -13,25 +13,21 @@ class ReeEnum::Value
13
13
  end
14
14
 
15
15
  def to_s
16
- value
16
+ value.to_s
17
17
  end
18
18
 
19
19
  def as_json(*args)
20
- to_s
20
+ value
21
21
  end
22
22
 
23
23
  contract(Or[ReeEnum::Value, String, Symbol, Integer, Any] => Bool)
24
24
  def ==(compare)
25
25
  if compare.is_a?(self.class)
26
26
  value == compare.value
27
- elsif compare.is_a?(Symbol)
28
- value == compare.to_s
29
- elsif compare.is_a?(String)
30
- value == compare || mapped_value == compare
31
- elsif compare.is_a?(Integer)
32
- mapped_value == compare
27
+ elsif compare.is_a?(Symbol) && value.is_a?(String)
28
+ value.to_sym == compare
33
29
  else
34
- false
30
+ value == compare || mapped_value == compare
35
31
  end
36
32
  end
37
33
 
@@ -11,6 +11,11 @@ class ReeEnum::Values
11
11
  @collection_by_mapped_value = {}
12
12
  end
13
13
 
14
+ def value_type
15
+ raise ArgumentError, "value_type is not defined" unless defined?(@value_type)
16
+ @value_type
17
+ end
18
+
14
19
  def to_a
15
20
  @collection
16
21
  end
@@ -19,12 +24,13 @@ class ReeEnum::Values
19
24
  @collection.each(&)
20
25
  end
21
26
 
22
- contract(Or[Symbol, String] => Nilor[ReeEnum::Value])
27
+ contract(Or[Symbol, String, Integer] => Nilor[ReeEnum::Value])
23
28
  def by_value(value)
24
- @collection_by_value[value.to_s]
29
+ value = value.to_s if value.is_a?(Symbol)
30
+ @collection_by_value[value]
25
31
  end
26
32
 
27
- contract(Or[Symbol, String] => ReeEnum::Value).throws(ArgumentError)
33
+ contract(Or[Symbol, String, Integer] => ReeEnum::Value).throws(ArgumentError)
28
34
  def by_value!(value)
29
35
  by_value(value) ||
30
36
  (raise ArgumentError.new("constant for value #{value.inspect} is not found in #{self.inspect}"))
@@ -45,8 +51,14 @@ class ReeEnum::Values
45
51
  @collection.map(&:inspect).inspect
46
52
  end
47
53
 
48
- contract(String, Or[Integer, String], Symbol => ReeEnum::Value)
54
+ contract(Or[String, Integer], Or[Integer, String], Symbol => ReeEnum::Value)
49
55
  def add(value, mapped_value, method)
56
+ if @value_type.nil?
57
+ @value_type = value.class
58
+ elsif @value_type != value.class
59
+ raise ArgumentError, "#{@klass}: value types should be the same for all enum values"
60
+ end
61
+
50
62
  if @collection.any? { _1.method == method }
51
63
  raise ArgumentError, "#{@klass}: method #{method.inspect} was already added"
52
64
  end
@@ -37,6 +37,17 @@ RSpec.describe ReeEnum::DSL do
37
37
  register_as_mapper_type
38
38
  end
39
39
 
40
+ class Numbers
41
+ include ReeEnum::DSL
42
+
43
+ enum :numbers
44
+
45
+ val 0, method: :zero
46
+ val 1, method: :one
47
+
48
+ register_as_mapper_type
49
+ end
50
+
40
51
  class Reflexives
41
52
  include ReeEnum::DSL
42
53
 
@@ -52,19 +63,22 @@ RSpec.describe ReeEnum::DSL do
52
63
  mapper :test_mapper do
53
64
  link :states
54
65
  link :types
66
+ link :numbers
55
67
  end
56
68
 
57
69
  class Dto
58
- attr_reader :type, :state
59
- def initialize(type, state)
70
+ attr_reader :type, :state, :number
71
+ def initialize(type, state, number)
60
72
  @type = type
61
73
  @state = state
74
+ @number = number
62
75
  end
63
76
  end
64
77
 
65
78
  build_mapper.use(:serialize).use(:cast).use(:db_dump).use(:db_load, dto: Dto) do
66
79
  types :type
67
80
  states :state
81
+ numbers :number
68
82
  end
69
83
  end
70
84
 
@@ -86,6 +100,8 @@ RSpec.describe ReeEnum::DSL do
86
100
  expect(o.second).to eq(1)
87
101
  expect(o.get_values.by_value(:first)).to eq(o.first)
88
102
  expect(o.get_values.by_value(:second)).to eq(o.second)
103
+ expect(o.get_values.by_value("first")).to eq(o.first)
104
+ expect(o.get_values.by_value("second")).to eq(o.second)
89
105
  expect(o.get_values.by_mapped_value(0)).to eq(o.first)
90
106
  expect(o.get_values.by_mapped_value(1)).to eq(o.second)
91
107
  expect(o.get_values.to_a).to eq([o.first, o.second])
@@ -108,11 +124,13 @@ RSpec.describe ReeEnum::DSL do
108
124
  mapper.serialize({
109
125
  state: TestReeEnum::States.first,
110
126
  type: TestReeEnum::Types.account,
127
+ number: TestReeEnum::Numbers.zero,
111
128
  })
112
129
  ).to eq(
113
130
  {
114
131
  state: 'first',
115
- type: 'account'
132
+ type: 'account',
133
+ number: 0,
116
134
  }
117
135
  )
118
136
 
@@ -120,6 +138,7 @@ RSpec.describe ReeEnum::DSL do
120
138
  mapper.cast({
121
139
  state: 'first',
122
140
  type: 'invalid',
141
+ number: 0,
123
142
  })
124
143
  }.to raise_error(ReeMapper::CoercionError, '`type` should be one of ["account"]')
125
144
 
@@ -127,11 +146,13 @@ RSpec.describe ReeEnum::DSL do
127
146
  mapper.cast({
128
147
  state: 'first',
129
148
  type: 'account',
149
+ number: 0,
130
150
  })
131
151
  ).to eq(
132
152
  {
133
153
  state: TestReeEnum::States.first,
134
- type: TestReeEnum::Types.account
154
+ type: TestReeEnum::Types.account,
155
+ number: TestReeEnum::Numbers.zero,
135
156
  }
136
157
  )
137
158
 
@@ -139,11 +160,27 @@ RSpec.describe ReeEnum::DSL do
139
160
  mapper.cast({
140
161
  state: TestReeEnum::States.first,
141
162
  type: TestReeEnum::Types.account,
163
+ number: TestReeEnum::Numbers.zero,
142
164
  })
143
165
  ).to eq(
144
166
  {
145
167
  state: TestReeEnum::States.first,
146
- type: TestReeEnum::Types.account
168
+ type: TestReeEnum::Types.account,
169
+ number: TestReeEnum::Numbers.zero,
170
+ }
171
+ )
172
+
173
+ expect(
174
+ mapper.cast({
175
+ state: TestReeEnum::States.first,
176
+ type: TestReeEnum::Types.account,
177
+ number: TestReeEnum::Numbers.zero,
178
+ })
179
+ ).to eq(
180
+ {
181
+ state: "first",
182
+ type: "account",
183
+ number: 0,
147
184
  }
148
185
  )
149
186
 
@@ -151,23 +188,28 @@ RSpec.describe ReeEnum::DSL do
151
188
  mapper.db_dump({
152
189
  state: TestReeEnum::States.first,
153
190
  type: TestReeEnum::Types.account,
191
+ number: TestReeEnum::Numbers.zero,
154
192
  })
155
193
  ).to eq(
156
194
  {
157
195
  state: 0,
158
- type: "account"
196
+ type: "account",
197
+ number: 0,
159
198
  }
160
199
  )
161
200
 
162
201
  dto = mapper.db_load({
163
202
  state: 0,
164
203
  type: "account",
204
+ number: 0,
165
205
  })
166
206
 
167
207
  expect(dto.state).to eq(TestReeEnum::States.first)
168
208
  expect(dto.state).to be_a(ReeEnum::Value)
169
209
  expect(dto.type).to eq(TestReeEnum::Types.account)
170
210
  expect(dto.type).to be_a(ReeEnum::Value)
211
+ expect(dto.number).to eq(TestReeEnum::Numbers.zero)
212
+ expect(dto.number).to be_a(ReeEnum::Value)
171
213
 
172
214
  expect(TestReeEnum::Reflexives.myself).to eq(:self)
173
215
  }
@@ -6,14 +6,15 @@ class ReeHash::Slice
6
6
  fn :slice do
7
7
  link :build_filter_keys
8
8
  link 'ree_hash/contracts/hash_keys_contract', -> { HashKeysContract }
9
- def_error { MissingKeyErr }
10
- def_error { InvalidFilterKey }
11
9
  end
12
10
 
11
+ MissingKeyErr = Class.new(ArgumentError)
12
+ InvalidFilterKey = Class.new(ArgumentError)
13
+
13
14
  doc(<<~DOC)
14
15
  Replaces the hash with only the given keys.
15
16
  Returns a hash containing the removed key/value pairs.
16
-
17
+
17
18
  hash = { a: 1, b: {e: 2, f: 1}, c: 3, d: 4 }
18
19
  slice(hash, [:a, :b]) # => {a: 1, b: 2}
19
20
  slice(hash, [:a, b: [:e]]) # => {a: 1, b: {e: 2}}
@@ -17,7 +17,7 @@
17
17
  {
18
18
  "arg": "locale",
19
19
  "arg_type": "req",
20
- "type": "Symbol"
20
+ "type": "Or[Symbol, String]"
21
21
  }
22
22
  ]
23
23
  }
@@ -15,11 +15,11 @@ class ReeMapper::Integer < ReeMapper::AbstractType
15
15
  if value.is_a?(Integer)
16
16
  value
17
17
  elsif value.is_a?(String)
18
- begin
19
- Integer(value)
20
- rescue ArgumentError => e
18
+ value = Integer(value, exception: false)
19
+ if value.nil?
21
20
  raise ReeMapper::CoercionError, "`#{name}` is invalid integer"
22
21
  end
22
+ value
23
23
  else
24
24
  raise ReeMapper::TypeError, "`#{name}` should be an integer"
25
25
  end
@@ -3,9 +3,9 @@
3
3
  class ReeObject::ToHash
4
4
  include Ree::FnDSL
5
5
 
6
- fn :to_hash do
7
- def_error { RecursiveObjectErr }
8
- end
6
+ fn :to_hash
7
+
8
+ RecursiveObjectErr = Class.new(ArgumentError)
9
9
 
10
10
  BASIC_TYPES = [
11
11
  Date, Time, Numeric, String, FalseClass, TrueClass, NilClass, Symbol,
@@ -1,7 +1 @@
1
- Ree.add_error_types(
2
- :invalid_param,
3
- :not_found,
4
- :validation
5
- )
6
-
7
1
  Ree.set_performance_mode
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ReeLib
4
- VERSION = "1.0.72"
4
+ VERSION = "1.0.73"
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.72
4
+ version: 1.0.73
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ruslan Gatiyatov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-08-28 00:00:00.000000000 Z
11
+ date: 2023-08-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ree
@@ -809,9 +809,12 @@ files:
809
809
  - lib/ree_lib/packages/ree_enum/Package.schema.json
810
810
  - lib/ree_lib/packages/ree_enum/bin/console
811
811
  - lib/ree_lib/packages/ree_enum/package/ree_enum.rb
812
+ - lib/ree_lib/packages/ree_enum/package/ree_enum/base_enum_mapper.rb
812
813
  - lib/ree_lib/packages/ree_enum/package/ree_enum/contractable.rb
813
814
  - lib/ree_lib/packages/ree_enum/package/ree_enum/dsl.rb
814
815
  - lib/ree_lib/packages/ree_enum/package/ree_enum/enumerable.rb
816
+ - lib/ree_lib/packages/ree_enum/package/ree_enum/integer_value_enum_mapper.rb
817
+ - lib/ree_lib/packages/ree_enum/package/ree_enum/string_value_enum_mapper.rb
815
818
  - lib/ree_lib/packages/ree_enum/package/ree_enum/value.rb
816
819
  - lib/ree_lib/packages/ree_enum/package/ree_enum/values.rb
817
820
  - lib/ree_lib/packages/ree_enum/spec/package_schema_spec.rb