minenum 0.2.0 → 0.2.1
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/lib/minenum/model.rb +31 -25
- data/lib/minenum/version.rb +1 -1
- data/sig/minenum/model/reflection.rbs +1 -1
- data/sig/minenum/model.rbs +9 -12
- 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: 3b0b250f9cdf2dc9e1b04c2147dbfed357c486a5a65ef3c47a2b588d661ec830
|
4
|
+
data.tar.gz: fc97171ca4d6569198cb6b0e1f0496968acba322d4cf36074c8b0bfedc8fd117
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0675e25518f01f6c8ddfc02468025b23bb3b16cddf2ddb8aa9605573c7f04d4ee332f0085b0a141cd7f23b49c78cd3a7ed7f25b3020f307f00bec2f11306bf54
|
7
|
+
data.tar.gz: 8ac83aa20381a9ec0c8620ecadcb5b367257ab321e472fd2b23a342802daf9665b5022b757fa6889d75b80774f8368ebf18d21ae9d61998c61b69214e6b67e5a
|
data/lib/minenum/model.rb
CHANGED
@@ -31,27 +31,36 @@ module Minenum
|
|
31
31
|
module Model
|
32
32
|
def self.included(base)
|
33
33
|
base.extend ClassMethods
|
34
|
-
base.include InstanceMethods
|
35
34
|
end
|
36
35
|
|
37
36
|
module AccessorAdder # :nodoc:
|
38
|
-
def add(model_class, methods_module, reflection)
|
39
|
-
add_singleton_method(model_class, reflection.name)
|
37
|
+
def add(model_class, methods_module, reflections, reflection)
|
38
|
+
add_singleton_method(model_class, reflection, reflection.name)
|
39
|
+
add_enum_method(methods_module, reflections) unless methods_module.method_defined?(:_minenum_enum)
|
40
40
|
|
41
41
|
add_getter(methods_module, reflection.name)
|
42
42
|
add_setter(methods_module, reflection.name)
|
43
43
|
|
44
|
-
|
44
|
+
reflections[reflection.name] = reflection
|
45
45
|
end
|
46
46
|
module_function :add
|
47
47
|
|
48
|
-
def add_singleton_method(model_class, name)
|
49
|
-
model_class.
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
48
|
+
def add_singleton_method(model_class, reflection, name)
|
49
|
+
model_class.singleton_class.define_method(name) do
|
50
|
+
reflection.enum_class
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def add_enum_method(methods_module, reflections)
|
55
|
+
methods_module.module_eval do
|
56
|
+
define_method(:_minenum_enum) do |name|
|
57
|
+
@_minenum_enum ||= {}
|
58
|
+
@_minenum_enum[name.to_sym] ||= reflections[name.to_sym].build_enum(self)
|
59
|
+
end
|
60
|
+
private :_minenum_enum
|
61
|
+
end
|
54
62
|
end
|
63
|
+
module_function :add_singleton_method, :add_enum_method
|
55
64
|
|
56
65
|
def add_getter(methods_module, name)
|
57
66
|
methods_module.module_eval <<~RUBY, __FILE__, __LINE__ + 1
|
@@ -68,13 +77,12 @@ module Minenum
|
|
68
77
|
end # end
|
69
78
|
RUBY
|
70
79
|
end
|
71
|
-
module_function :
|
80
|
+
module_function :add_getter, :add_setter
|
72
81
|
end
|
73
82
|
|
74
83
|
module ClassMethods # :nodoc:
|
75
|
-
def enum(name, values
|
76
|
-
|
77
|
-
AccessorAdder.add(self, enum_methods_module, reflection)
|
84
|
+
def enum(name, values)
|
85
|
+
_minenum_enum(name, values, _minenum_methods_module, _minenum_reflections)
|
78
86
|
end
|
79
87
|
|
80
88
|
def _minenum_reflections
|
@@ -83,22 +91,20 @@ module Minenum
|
|
83
91
|
|
84
92
|
private
|
85
93
|
|
86
|
-
def
|
87
|
-
|
94
|
+
def _minenum_enum(name, values, methods_module, reflections, adapter_builder: nil)
|
95
|
+
adapter_builder ||= Enum::Adapter::LocalInstanceVariableAccessor
|
96
|
+
|
97
|
+
reflection = Reflection.new(self, name, values, adapter_builder: adapter_builder)
|
98
|
+
AccessorAdder.add(self, methods_module, reflections, reflection)
|
99
|
+
end
|
100
|
+
|
101
|
+
def _minenum_methods_module
|
102
|
+
@_minenum_methods_module ||= begin
|
88
103
|
mod = Module.new
|
89
104
|
include mod
|
90
105
|
mod
|
91
106
|
end
|
92
107
|
end
|
93
108
|
end
|
94
|
-
|
95
|
-
module InstanceMethods # :nodoc:
|
96
|
-
private
|
97
|
-
|
98
|
-
def _minenum_enum(name)
|
99
|
-
@_minenum_enum ||= {}
|
100
|
-
@_minenum_enum[name.to_sym] ||= self.class._minenum_reflections[name.to_sym].build_enum(self)
|
101
|
-
end
|
102
|
-
end
|
103
109
|
end
|
104
110
|
end
|
data/lib/minenum/version.rb
CHANGED
@@ -9,7 +9,7 @@ module Minenum
|
|
9
9
|
|
10
10
|
attr_reader adapter_builder: untyped
|
11
11
|
|
12
|
-
def initialize: (untyped, String | Symbol, Hash[untyped, untyped], ?adapter_builder:
|
12
|
+
def initialize: (untyped, String | Symbol, Hash[untyped, untyped], ?adapter_builder: untyped) -> void
|
13
13
|
def name: -> Symbol
|
14
14
|
def enum_class: -> untyped
|
15
15
|
def build_enum: (untyped) -> untyped
|
data/sig/minenum/model.rbs
CHANGED
@@ -1,29 +1,26 @@
|
|
1
1
|
module Minenum
|
2
2
|
module Model
|
3
3
|
module AccessorAdder
|
4
|
-
def self?.add: (untyped, untyped, Minenum::Model::Reflection) -> void
|
5
|
-
def self?.add_singleton_method: (untyped, Symbol) -> void
|
4
|
+
def self?.add: (untyped, untyped, Hash[Symbol, Minenum::Model::Reflection], Minenum::Model::Reflection) -> void
|
5
|
+
def self?.add_singleton_method: (untyped, Minenum::Model::Reflection, Symbol) -> void
|
6
|
+
def self?.add_enum_method: (untyped, Hash[Symbol, Minenum::Model::Reflection]) -> void
|
6
7
|
def self?.add_getter: (untyped, Symbol) -> void
|
7
8
|
def self?.add_setter: (untyped, Symbol) -> void
|
9
|
+
|
10
|
+
def self?.define_method: (Symbol) { (Symbol) -> void } -> void
|
11
|
+
def self?.private: (Symbol) -> void
|
8
12
|
end
|
9
13
|
|
10
14
|
module ClassMethods
|
11
|
-
def enum: (String | Symbol
|
15
|
+
def enum: (String | Symbol, Hash[String | Symbol, untyped]) -> void
|
12
16
|
def _minenum_reflections: -> Hash[Symbol, untyped]
|
13
17
|
|
14
18
|
private
|
15
19
|
|
16
|
-
def
|
20
|
+
def _minenum_enum: (String | Symbol, Hash[String | Symbol, untyped], Module, Hash[Symbol, Minenum::Model::Reflection], ?adapter_builder: untyped) -> void
|
21
|
+
def _minenum_methods_module: -> Module
|
17
22
|
|
18
23
|
def include: (Module) -> self
|
19
24
|
end
|
20
|
-
|
21
|
-
module InstanceMethods
|
22
|
-
private
|
23
|
-
|
24
|
-
def _minenum_enum: (Symbol) -> untyped
|
25
|
-
|
26
|
-
def self._minenum_reflections: -> Hash[Symbol, untyped]
|
27
|
-
end
|
28
25
|
end
|
29
26
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: minenum
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Loose Coupling
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-06-
|
11
|
+
date: 2024-06-06 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Enum for Ruby
|
14
14
|
email:
|