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 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