ree_lib 1.0.73 → 1.0.75
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 +4 -4
- data/Gemfile.lock +5 -5
- data/lib/ree_lib/packages/ree_enum/package/ree_enum/base_enum_mapper.rb +2 -0
- data/lib/ree_lib/packages/ree_enum/package/ree_enum/dsl.rb +5 -5
- data/lib/ree_lib/packages/ree_enum/package/ree_enum/enumerable.rb +23 -11
- data/lib/ree_lib/packages/ree_enum/package/ree_enum/value.rb +1 -1
- data/lib/ree_lib/packages/ree_enum/package/ree_enum/values.rb +2 -2
- data/lib/ree_lib/packages/ree_enum/spec/ree_enum/dsl_spec.rb +22 -1
- data/lib/ree_lib/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ce1a7a42b2936e86f44691bec23557e4e04f72e154202ab2a414257fd1fe304a
|
4
|
+
data.tar.gz: aea223cb572a0057a0c2e456c2940a050d6fa344f37297e205215cc2e38f1220
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b8d8f51cd4fbe458d815568a8d10bb85577f4a62cf13663282fedfc45741917a4855eb0611b011e078c1b9c38256a5a10c9b28641ed65b4e1eedf0b442a47af1
|
7
|
+
data.tar.gz: 41195673e8f6c05f6b367af2ed170f71b06626dcbc88e9742f29b2161902cd5b7395b81deee946900b3e339381e2202c70d6e9c592a680e7b4f829f195cb7e5c
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ree_lib (1.0.
|
4
|
+
ree_lib (1.0.75)
|
5
5
|
binding_of_caller (~> 1.0.0)
|
6
6
|
i18n (~> 1.12.0)
|
7
7
|
loofah (~> 2.18.0)
|
@@ -37,10 +37,10 @@ GEM
|
|
37
37
|
loofah (2.18.0)
|
38
38
|
crass (~> 1.0.2)
|
39
39
|
nokogiri (>= 1.5.9)
|
40
|
+
mini_portile2 (2.8.1)
|
40
41
|
msgpack (1.6.0)
|
41
|
-
nokogiri (1.
|
42
|
-
|
43
|
-
nokogiri (1.15.4-x86_64-linux)
|
42
|
+
nokogiri (1.13.10)
|
43
|
+
mini_portile2 (~> 2.8.0)
|
44
44
|
racc (~> 1.4)
|
45
45
|
oj (3.13.23)
|
46
46
|
pg (1.4.6)
|
@@ -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.
|
54
|
+
ree (1.0.32)
|
55
55
|
commander (~> 4.6.0)
|
56
56
|
rexml (3.2.5)
|
57
57
|
roda (3.58.0)
|
@@ -49,14 +49,12 @@ module ReeEnum
|
|
49
49
|
def register_as_swagger_type
|
50
50
|
swagger_type_registrator = ReeSwagger::RegisterType.new
|
51
51
|
|
52
|
-
definition = swagger_definition
|
53
|
-
|
54
52
|
[:casters, :serializers].each do |kind|
|
55
53
|
swagger_type_registrator.call(
|
56
54
|
kind,
|
57
55
|
type_for_mapper.class,
|
58
|
-
->(
|
59
|
-
|
56
|
+
->(type, _build_schema) {
|
57
|
+
type.enum.swagger_definition
|
60
58
|
}
|
61
59
|
)
|
62
60
|
end
|
@@ -75,6 +73,8 @@ module ReeEnum
|
|
75
73
|
end
|
76
74
|
|
77
75
|
def swagger_definition
|
76
|
+
return @swagger_definition if defined? @swagger_definition
|
77
|
+
|
78
78
|
value_type = get_values.value_type
|
79
79
|
|
80
80
|
type = if value_type == String
|
@@ -85,7 +85,7 @@ module ReeEnum
|
|
85
85
|
raise NotImplementedError, "value_type #{value_type} is not supported"
|
86
86
|
end
|
87
87
|
|
88
|
-
{
|
88
|
+
@swagger_definition = {
|
89
89
|
type: type,
|
90
90
|
enum: get_values.each.map(&:value)
|
91
91
|
}
|
@@ -13,10 +13,16 @@ module ReeEnum::Enumerable
|
|
13
13
|
include ReeEnum::Contractable
|
14
14
|
|
15
15
|
RESTRICTED_METHODS = [
|
16
|
-
:setup_enum, :get_values, :get_enum_name,
|
17
|
-
:
|
16
|
+
:setup_enum, :get_values, :get_enum_name, :val,
|
17
|
+
:__ENCODING__, :__LINE__, :__FILE__, :BEGIN, :END,
|
18
|
+
:alias, :and, :begin, :break, :case, :class, :def, :defined?,
|
19
|
+
:do, :else, :elsif, :end, :ensure, :false, :for, :if, :in,
|
20
|
+
:module, :next, :nil, :not, :or, :redo, :rescue, :retry, :return,
|
21
|
+
:self, :super, :then, :true, :undef, :unless, :until, :when, :while, :yield
|
18
22
|
].freeze
|
19
23
|
|
24
|
+
ALLOWED_VALUE_TO_METHOD_REGEXP = /^[a-z_]\w*[?!]?$/
|
25
|
+
|
20
26
|
def setup_enum(enum_name)
|
21
27
|
@values ||= ReeEnum::Values.new(self, enum_name)
|
22
28
|
end
|
@@ -29,25 +35,31 @@ module ReeEnum::Enumerable
|
|
29
35
|
@values&.enum_name
|
30
36
|
end
|
31
37
|
|
32
|
-
def val(value, mapped_value = nil, method:
|
38
|
+
def val(value, mapped_value = nil, method: nil)
|
33
39
|
value = value.to_s if value.is_a?(Symbol)
|
34
40
|
mapped_value ||= value
|
35
41
|
|
42
|
+
if method.nil? && value.is_a?(String) && value.match?(ALLOWED_VALUE_TO_METHOD_REGEXP)
|
43
|
+
method = value.to_sym
|
44
|
+
end
|
45
|
+
|
36
46
|
if RESTRICTED_METHODS.include?(method)
|
37
47
|
raise ArgumentError.new("#{method.inspect} is not allowed as enum method")
|
38
48
|
end
|
39
49
|
|
40
50
|
enum_value = @values.add(value, mapped_value, method)
|
41
51
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
52
|
+
if !method.nil?
|
53
|
+
class_eval(<<~RUBY, __FILE__, __LINE__ + 1)
|
54
|
+
def #{method}
|
55
|
+
get_values.by_value(#{value.inspect}.freeze)
|
56
|
+
end
|
46
57
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
58
|
+
def self.#{method}
|
59
|
+
get_values.by_value(#{value.inspect}.freeze)
|
60
|
+
end
|
61
|
+
RUBY
|
62
|
+
end
|
51
63
|
|
52
64
|
enum_value
|
53
65
|
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, Or[String, Integer], Or[Integer, String], Symbol => Any)
|
6
|
+
contract(Class, Symbol, Or[String, Integer], Or[Integer, String], Nilor[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
|
@@ -51,7 +51,7 @@ class ReeEnum::Values
|
|
51
51
|
@collection.map(&:inspect).inspect
|
52
52
|
end
|
53
53
|
|
54
|
-
contract(Or[String, Integer], Or[Integer, String], Symbol => ReeEnum::Value)
|
54
|
+
contract(Or[String, Integer], Or[Integer, String], Nilor[Symbol] => ReeEnum::Value)
|
55
55
|
def add(value, mapped_value, method)
|
56
56
|
if @value_type.nil?
|
57
57
|
@value_type = value.class
|
@@ -59,7 +59,7 @@ class ReeEnum::Values
|
|
59
59
|
raise ArgumentError, "#{@klass}: value types should be the same for all enum values"
|
60
60
|
end
|
61
61
|
|
62
|
-
if @collection.any? { _1.method == method }
|
62
|
+
if !method.nil? && @collection.any? { _1.method == method }
|
63
63
|
raise ArgumentError, "#{@klass}: method #{method.inspect} was already added"
|
64
64
|
end
|
65
65
|
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
package_require('ree_enum/dsl')
|
3
|
+
package_require('ree_swagger/functions/get_serializer_definition')
|
3
4
|
|
4
5
|
RSpec.describe ReeEnum::DSL do
|
5
6
|
before do
|
@@ -57,13 +58,24 @@ RSpec.describe ReeEnum::DSL do
|
|
57
58
|
val :yourself
|
58
59
|
end
|
59
60
|
|
61
|
+
class ContentTypes
|
62
|
+
include ReeEnum::DSL
|
63
|
+
|
64
|
+
enum :content_types
|
65
|
+
|
66
|
+
val "video/mp4"
|
67
|
+
val "image/png"
|
68
|
+
|
69
|
+
register_as_mapper_type
|
70
|
+
end
|
71
|
+
|
60
72
|
class TestMapper
|
61
73
|
include ReeMapper::DSL
|
62
74
|
|
63
75
|
mapper :test_mapper do
|
76
|
+
link :numbers
|
64
77
|
link :states
|
65
78
|
link :types
|
66
|
-
link :numbers
|
67
79
|
end
|
68
80
|
|
69
81
|
class Dto
|
@@ -212,5 +224,14 @@ RSpec.describe ReeEnum::DSL do
|
|
212
224
|
expect(dto.number).to be_a(ReeEnum::Value)
|
213
225
|
|
214
226
|
expect(TestReeEnum::Reflexives.myself).to eq(:self)
|
227
|
+
|
228
|
+
expect(TestReeEnum::ContentTypes.method_defined?(:"video/mp4")).to be_falsey
|
229
|
+
|
230
|
+
swagger_definition_fetcher = ReeSwagger::GetSerializerDefinition.new
|
231
|
+
expect(
|
232
|
+
swagger_definition_fetcher.call(TestReeEnum::Reflexives.type_for_mapper, -> {})
|
233
|
+
).not_to eq(
|
234
|
+
swagger_definition_fetcher.call(TestReeEnum::ContentTypes.type_for_mapper, -> {})
|
235
|
+
)
|
215
236
|
}
|
216
237
|
end
|
data/lib/ree_lib/version.rb
CHANGED
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.
|
4
|
+
version: 1.0.75
|
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-
|
11
|
+
date: 2023-09-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ree
|