ree_lib 1.0.73 → 1.0.75

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: 8bc7c01750d09b6274eabf44aa42ab5df1638372eed12a81bf2f79d09caf2920
4
- data.tar.gz: 8dd947819db285b9ead46579f4eacb3b482a27fa525f48e0f997f21ac230744e
3
+ metadata.gz: ce1a7a42b2936e86f44691bec23557e4e04f72e154202ab2a414257fd1fe304a
4
+ data.tar.gz: aea223cb572a0057a0c2e456c2940a050d6fa344f37297e205215cc2e38f1220
5
5
  SHA512:
6
- metadata.gz: 498b93f53f71563223d74404aa958ea60618c3513c21a9344ae6c18bce4fd6664113eb47aae7f4626577c632417f355a09252411ebe244921c1443f5846c8e3c
7
- data.tar.gz: d1c3ac12551051f7f9b5f71e785e4cbe22bc5854863b8e406c6b3f950ed486043c9f9c2fffc88ce2c95df471aab47f3c3401af2b6c353bffb2c22bd24d867619
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.73)
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.15.4-x86_64-darwin)
42
- racc (~> 1.4)
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.31)
54
+ ree (1.0.32)
55
55
  commander (~> 4.6.0)
56
56
  rexml (3.2.5)
57
57
  roda (3.58.0)
@@ -2,6 +2,8 @@
2
2
  require_relative "value"
3
3
 
4
4
  class ReeEnum::BaseEnumMapper < ReeMapper::AbstractType
5
+ attr_reader :enum
6
+
5
7
  def initialize(enum)
6
8
  @enum = enum
7
9
  end
@@ -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
- definition
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
- :val, :self, :class, :alias
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: value.to_s.to_sym)
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
- class_eval(<<~RUBY, __FILE__, __LINE__ + 1)
43
- def #{method}
44
- get_values.by_value(#{value.inspect}.freeze)
45
- end
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
- def self.#{method}
48
- get_values.by_value(#{value.inspect}.freeze)
49
- end
50
- RUBY
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ReeLib
4
- VERSION = "1.0.73"
4
+ VERSION = "1.0.75"
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.73
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-08-30 00:00:00.000000000 Z
11
+ date: 2023-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ree