striuct 0.7.0 → 0.8.0
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/README.md +40 -36
- data/lib/striuct.rb +5 -1
- data/lib/striuct/{requirements.rb → bootstrap.rb} +3 -1
- data/lib/striuct/classmethods/adjustment.rb +62 -0
- data/lib/striuct/classmethods/attributes.rb +2 -2
- data/lib/striuct/classmethods/constructor.rb +3 -6
- data/lib/striuct/classmethods/macro.rb +18 -29
- data/lib/striuct/classmethods/requirements.rb +0 -2
- data/lib/striuct/instancemethods/getter.rb +1 -1
- data/lib/striuct/instancemethods/requirements.rb +0 -6
- data/lib/striuct/instancemethods/setter.rb +4 -4
- data/lib/striuct/instancemethods/validation.rb +15 -0
- data/lib/striuct/singleton_class.rb +15 -3
- metadata +9 -50
- data/lib/striuct/instancemethods/keyvalidatable.rb +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d820670e757190ed2db502b8d6e0c53a7689f299262695f3ca18cec69dd5270b
|
4
|
+
data.tar.gz: 8a27cca712c9a63c2a5207090a6a8d0d8dcecd24a13bf07fa16c243a3b24c366
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c90d1e6cc1ac20015660134d88d863dc935d6db44128e0f49f7c807b6b357d4821055d989e9e9e3a8bb4c49382acbab04509bf0445389a454c72c3fb729cbd85
|
7
|
+
data.tar.gz: a7154a914174099a8b5d32fe4b534811c14187f3fb9e8735cba701764b7d9aee640de1c276711dcedb85915f33efc9fecac87dde0ae8a09d704d0bbf84f3f11b
|
data/README.md
CHANGED
@@ -1,49 +1,29 @@
|
|
1
|
-
striuct
|
2
|
-
=======
|
1
|
+
# striuct
|
3
2
|
|
4
3
|

|
5
4
|
[](http://badge.fury.io/rb/striuct)
|
6
5
|
|
7
|
-
Description
|
8
|
-
-----------
|
9
|
-
|
10
6
|
Struct++
|
11
7
|
|
12
|
-
|
13
|
-
--------
|
14
|
-
|
15
|
-
### Strict
|
16
|
-
|
17
|
-
* Easy and Flexible Validations
|
18
|
-
* Prevent to conflict member names
|
19
|
-
* Lock setters for each member
|
20
|
-
|
21
|
-
### Useful
|
22
|
-
|
23
|
-
* Hook just before setters
|
24
|
-
* Default value
|
25
|
-
* Member aliasing
|
26
|
-
* Inheritable
|
27
|
-
* Handling between nil <-> unassigned
|
28
|
-
* Similar API for Hash
|
29
|
-
|
30
|
-
### Onepoint
|
31
|
-
|
32
|
-
* Base API looks like Struct
|
33
|
-
* Pure Ruby :)
|
34
|
-
|
35
|
-
Usage
|
36
|
-
-----
|
8
|
+
## Usage
|
37
9
|
|
38
10
|
Require Ruby 2.6 or later
|
39
11
|
|
40
12
|
Add this line to your `Gemfile`
|
41
13
|
|
42
14
|
```ruby
|
43
|
-
gem 'striuct', '>= 0.
|
15
|
+
gem 'striuct', '>= 0.8.0', '< 0.9.0'
|
44
16
|
```
|
45
17
|
|
46
|
-
|
18
|
+
Then add below code into your Ruby code
|
19
|
+
|
20
|
+
```ruby
|
21
|
+
require 'striuct'
|
22
|
+
```
|
23
|
+
|
24
|
+
### Overview
|
25
|
+
|
26
|
+
#### Case 1
|
47
27
|
|
48
28
|
```ruby
|
49
29
|
require 'striuct'
|
@@ -72,7 +52,7 @@ ken = User[name: 'ken'] # Construct from hash
|
|
72
52
|
ken.id #=> 2
|
73
53
|
```
|
74
54
|
|
75
|
-
|
55
|
+
#### Case 2
|
76
56
|
|
77
57
|
```ruby
|
78
58
|
class Foo < Striuct
|
@@ -102,7 +82,7 @@ foo.with_adjuster = '5'
|
|
102
82
|
foo.with_adjuster #=> 5 # Casted via adjuster
|
103
83
|
```
|
104
84
|
|
105
|
-
|
85
|
+
#### Case 3
|
106
86
|
|
107
87
|
```ruby
|
108
88
|
class UseMustOption < Striuct
|
@@ -112,8 +92,32 @@ end
|
|
112
92
|
UseMustOption.new #=> InvalidOperationError "`foo` require a value under `must` option "
|
113
93
|
```
|
114
94
|
|
115
|
-
|
116
|
-
|
95
|
+
## Features
|
96
|
+
|
97
|
+
### Strict
|
98
|
+
|
99
|
+
* Easy and Flexible Validations
|
100
|
+
* Basically use `#===` for the validation
|
101
|
+
* The pattern builder DSL is just using [eqq](https://github.com/kachick/eqq)
|
102
|
+
* When passed the Proc, it will be evaluated in the instance context
|
103
|
+
* Prevent to conflict member names
|
104
|
+
* Lock setters for each member
|
105
|
+
|
106
|
+
### Useful
|
107
|
+
|
108
|
+
* Hook just before setters
|
109
|
+
* Default value
|
110
|
+
* Member aliasing
|
111
|
+
* Inheritable
|
112
|
+
* Handling between nil <-> unassigned
|
113
|
+
* Similar API for Hash
|
114
|
+
|
115
|
+
### Finally
|
116
|
+
|
117
|
+
* Base API looks like Struct
|
118
|
+
* Pure Ruby :)
|
119
|
+
|
120
|
+
## Link
|
117
121
|
|
118
122
|
* [Repository](https://github.com/kachick/striuct)
|
119
123
|
* [API documents](https://kachick.github.io/striuct/)
|
data/lib/striuct.rb
CHANGED
@@ -7,6 +7,10 @@
|
|
7
7
|
class Striuct
|
8
8
|
class Error < StandardError; end
|
9
9
|
class InvalidOperationError < Error; end
|
10
|
+
class InvalidValueError < Error; end
|
11
|
+
class InvalidWritingError < InvalidValueError; end
|
12
|
+
class InvalidReadingError < InvalidValueError; end
|
13
|
+
class InvalidAdjustingError < InvalidValueError; end
|
10
14
|
end
|
11
15
|
|
12
|
-
require_relative 'striuct/
|
16
|
+
require_relative 'striuct/bootstrap'
|
@@ -4,6 +4,68 @@ class Striuct
|
|
4
4
|
module ClassMethods
|
5
5
|
# @group Adjuster
|
6
6
|
|
7
|
+
# Adjuster Builders
|
8
|
+
# Apply adjuster when passed pattern.
|
9
|
+
# @param pattern [Proc, Method, #===]
|
10
|
+
# @param adjuster [Proc, #to_proc]
|
11
|
+
# @return [Proc]
|
12
|
+
def WHEN(pattern, adjuster)
|
13
|
+
unless Eqq.valid?(pattern)
|
14
|
+
raise ArgumentError, 'wrong object for pattern'
|
15
|
+
end
|
16
|
+
|
17
|
+
unless Striuct.adjustable?(adjuster)
|
18
|
+
raise ArgumentError, 'wrong object for adjuster'
|
19
|
+
end
|
20
|
+
|
21
|
+
->v { _valid?(pattern, v) ? adjuster.call(v) : v }
|
22
|
+
end
|
23
|
+
|
24
|
+
# Sequential apply all adjusters.
|
25
|
+
# @param adjuster1 [Proc, #to_proc]
|
26
|
+
# @param adjuster2 [Proc, #to_proc]
|
27
|
+
# @param adjusters [Proc, #to_proc]
|
28
|
+
# @return [Proc]
|
29
|
+
def INJECT(adjuster1, adjuster2, *adjusters)
|
30
|
+
adjusters = [adjuster1, adjuster2, *adjusters]
|
31
|
+
|
32
|
+
unless adjusters.all? { |f| adjustable?(f) }
|
33
|
+
raise ArgumentError, 'wrong object for adjuster'
|
34
|
+
end
|
35
|
+
|
36
|
+
->v {
|
37
|
+
adjusters.reduce(v) { |ret, adjuster| adjuster.call(ret) }
|
38
|
+
}
|
39
|
+
end
|
40
|
+
|
41
|
+
# Accept any parser when that respond to parse method.
|
42
|
+
# @param parser [#parse]
|
43
|
+
# @return [Proc]
|
44
|
+
def PARSE(parser)
|
45
|
+
if !::Integer.equal?(parser) && !parser.respond_to?(:parse)
|
46
|
+
raise ArgumentError, 'wrong object for parser'
|
47
|
+
end
|
48
|
+
|
49
|
+
->v {
|
50
|
+
if ::Integer.equal?(parser)
|
51
|
+
::Kernel.Integer(v)
|
52
|
+
else
|
53
|
+
parser.parse(
|
54
|
+
case v
|
55
|
+
when String
|
56
|
+
v
|
57
|
+
when ->_ { v.respond_to?(:to_str) }
|
58
|
+
v.to_str
|
59
|
+
when ->_ { v.respond_to?(:read) }
|
60
|
+
v.read
|
61
|
+
else
|
62
|
+
raise TypeError, 'wrong object for parsing source'
|
63
|
+
end
|
64
|
+
)
|
65
|
+
end
|
66
|
+
}
|
67
|
+
end
|
68
|
+
|
7
69
|
# @param [Symbol, String, #to_sym, Integer, #to_int] key - name / index
|
8
70
|
def adjuster_for(key)
|
9
71
|
autonym = autonym_for_key(key)
|
@@ -32,7 +32,7 @@ class Striuct
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def condition=(condition)
|
35
|
-
unless
|
35
|
+
unless Eqq.valid?(condition)
|
36
36
|
raise TypeError, 'wrong object for condition'
|
37
37
|
end
|
38
38
|
|
@@ -40,7 +40,7 @@ class Striuct
|
|
40
40
|
end
|
41
41
|
|
42
42
|
def adjuster=(adjuster)
|
43
|
-
unless
|
43
|
+
unless Striuct.adjustable?(adjuster)
|
44
44
|
raise ArgumentError, 'wrong object for adjuster'
|
45
45
|
end
|
46
46
|
|
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'keyvalidatable'
|
4
|
-
|
5
3
|
class Striuct
|
6
4
|
module ClassMethods
|
7
5
|
# @group Constructor
|
@@ -16,9 +14,8 @@ class Striuct
|
|
16
14
|
# @param [Hash, Struct, Striuct, #each_pair] pairs
|
17
15
|
# @return [Striuct]
|
18
16
|
def for_pairs(pairs)
|
19
|
-
raise
|
20
|
-
|
21
|
-
KeyValidatable.validate_array(KeyValidatable.keys_for(pairs).map(&:to_sym), let: all_members)
|
17
|
+
raise ArgumentError, 'no pairs object' unless pairs.respond_to?(:each_pair)
|
18
|
+
raise ArgumentError unless pairs.each_pair { |key, _value| all_members.include?(key.to_sym) }
|
22
19
|
|
23
20
|
instance = allocate
|
24
21
|
instance.__send__(:initialize_for_pairs, pairs)
|
@@ -46,7 +43,7 @@ class Striuct
|
|
46
43
|
|
47
44
|
invalids = autonyms.select { |autonym| !instance.valid?(autonym) }
|
48
45
|
if strict && !invalids.empty?
|
49
|
-
raise
|
46
|
+
raise InvalidWritingError,
|
50
47
|
"invalids members are, yet '#{invalids.inspect} in #{self}'"
|
51
48
|
end
|
52
49
|
|
@@ -4,36 +4,25 @@ class Striuct
|
|
4
4
|
module ClassMethods
|
5
5
|
# @group Macro for Member Definition
|
6
6
|
|
7
|
-
ANYTHING =
|
7
|
+
ANYTHING = Eqq.ANYTHING()
|
8
8
|
|
9
9
|
# @return [Class]
|
10
|
-
ADD_MEMBER_OptArg = OptionalArgument.define {
|
11
|
-
opt(:default_value, aliases: [:default])
|
12
|
-
opt(:default_proc, aliases: [:lazy_default])
|
13
|
-
conflict(:default_value, :default_proc)
|
14
|
-
opt(:must, default: false)
|
15
|
-
opt(:setter_validation, aliases: [:writer_validation], default: true)
|
16
|
-
opt(:getter_validation, aliases: [:reader_validation], default: false)
|
17
|
-
}
|
18
10
|
|
19
11
|
private
|
20
12
|
|
21
13
|
# @param [Symbol, String, #to_sym] autonym
|
22
|
-
# @param [#===, Proc, Method]
|
23
|
-
# @param [
|
24
|
-
# @
|
25
|
-
# @
|
26
|
-
# @
|
27
|
-
# @
|
28
|
-
|
29
|
-
# @option options [Boolean] :writer_validation
|
30
|
-
# @option options [Boolean] :setter_validation
|
31
|
-
# @return [nil]
|
32
|
-
def add_member(autonym, condition=anything, options={}, &adjuster)
|
14
|
+
# @param [#===, Proc, Method] pattern
|
15
|
+
# @param [Proc] default_proc
|
16
|
+
# @param [Boolean] must
|
17
|
+
# @param [Boolean] writer_validation
|
18
|
+
# @param [Boolean] reader_validation
|
19
|
+
# @return [void]
|
20
|
+
def add_member(autonym, pattern=ANYTHING, default_value: nil, default_proc: nil, must: false, writer_validation: true, reader_validation: false, &adjuster)
|
33
21
|
_check_frozen
|
34
22
|
_check_closed
|
35
23
|
|
36
|
-
|
24
|
+
raise ArgumentError if !default_value.nil? && default_proc
|
25
|
+
|
37
26
|
autonym = autonym.to_sym # First definition for an autonym
|
38
27
|
|
39
28
|
raise ArgumentError, %Q!already exist name "#{autonym}"! if member?(autonym)
|
@@ -41,21 +30,21 @@ class Striuct
|
|
41
30
|
_check_safety_naming(autonym)
|
42
31
|
_add_autonym(autonym)
|
43
32
|
|
44
|
-
_attributes_for(autonym).safety_setter =
|
45
|
-
_attributes_for(autonym).safety_getter =
|
33
|
+
_attributes_for(autonym).safety_setter = writer_validation
|
34
|
+
_attributes_for(autonym).safety_getter = reader_validation
|
46
35
|
|
47
|
-
if
|
36
|
+
if must
|
48
37
|
_attributes_for(autonym).must = true
|
49
38
|
end
|
50
39
|
|
51
40
|
_def_getter(autonym)
|
52
|
-
_def_setter(autonym,
|
41
|
+
_def_setter(autonym, pattern, &adjuster)
|
53
42
|
|
54
43
|
case
|
55
|
-
when
|
56
|
-
set_default_value(autonym,
|
57
|
-
when
|
58
|
-
set_default_value(autonym, &
|
44
|
+
when !default_value.nil?
|
45
|
+
set_default_value(autonym, default_value)
|
46
|
+
when default_proc
|
47
|
+
set_default_value(autonym, &default_proc)
|
59
48
|
end
|
60
49
|
|
61
50
|
nil
|
@@ -1,21 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'forwardable'
|
4
|
-
require 'keyvalidatable'
|
5
|
-
|
6
3
|
class Striuct
|
7
4
|
module InstanceMethods
|
8
5
|
extend Forwardable
|
9
6
|
|
10
7
|
# hide Forwardable's public/protected class_macro
|
11
8
|
private_class_method(*Forwardable.instance_methods)
|
12
|
-
|
13
|
-
include KeyValidatable
|
14
9
|
end
|
15
10
|
end
|
16
11
|
|
17
12
|
require_relative 'delegate_class_methods'
|
18
|
-
require_relative 'keyvalidatable'
|
19
13
|
require_relative 'object'
|
20
14
|
require_relative 'compare'
|
21
15
|
require_relative 'to_s'
|
@@ -9,7 +9,7 @@ class Striuct
|
|
9
9
|
def []=(key, value)
|
10
10
|
autonym = autonym_for_key(key)
|
11
11
|
_set(autonym, value)
|
12
|
-
rescue
|
12
|
+
rescue InvalidWritingError
|
13
13
|
$!.set_backtrace(
|
14
14
|
["#{$!.backtrace[-1].sub(/[^:]+\z/) { '' }}in `[#{key.inspect}(#{autonym})]=': #{$!.message}", $!.backtrace[-1]]
|
15
15
|
)
|
@@ -31,17 +31,17 @@ class Striuct
|
|
31
31
|
begin
|
32
32
|
value = instance_exec(value, &adjuster_for(autonym))
|
33
33
|
rescue Exception
|
34
|
-
raise
|
34
|
+
raise InvalidAdjustingError
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
38
|
if with_safety_setter?(autonym) && !accept?(autonym, value)
|
39
|
-
raise
|
39
|
+
raise InvalidWritingError,
|
40
40
|
"#{value.inspect} is deficient for #{autonym} in #{self.class}"
|
41
41
|
end
|
42
42
|
|
43
43
|
@db[autonym] = value
|
44
|
-
rescue
|
44
|
+
rescue InvalidValueError
|
45
45
|
unless /in \[\]=/.match?(caller(2..2).first.slice(/([^:]+)\z/))
|
46
46
|
$!.backtrace.delete_if { |s| /#{Regexp.escape(File.dirname(__FILE__))}/ =~ s }
|
47
47
|
$!.backtrace.first.sub!(/([^:]+)\z/) { "in `#{autonym}='" }
|
@@ -4,6 +4,21 @@ class Striuct
|
|
4
4
|
module InstanceMethods
|
5
5
|
# @group Validation
|
6
6
|
|
7
|
+
# @param [Proc, Method, #===] pattern
|
8
|
+
# @param [Object] value
|
9
|
+
def _valid?(pattern, value)
|
10
|
+
!!(
|
11
|
+
case pattern
|
12
|
+
when Proc
|
13
|
+
instance_exec(value, &pattern)
|
14
|
+
when Method
|
15
|
+
pattern.call(value)
|
16
|
+
else
|
17
|
+
pattern === value
|
18
|
+
end
|
19
|
+
)
|
20
|
+
end
|
21
|
+
|
7
22
|
# @param [Symbol, String, #to_sym, Integer, #to_int] key - name / index
|
8
23
|
# @param value
|
9
24
|
# true if passed under any condition
|
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'validation'
|
4
|
-
|
5
3
|
class Striuct
|
6
4
|
class << self
|
7
5
|
alias_method :new_instance, :new
|
@@ -40,6 +38,20 @@ class Striuct
|
|
40
38
|
}
|
41
39
|
end
|
42
40
|
|
41
|
+
# Return `true` if given object is sufficient as an adjuster role
|
42
|
+
def adjustable?(object)
|
43
|
+
case object
|
44
|
+
when Proc
|
45
|
+
object.arity == 1
|
46
|
+
else
|
47
|
+
if object.respond_to?(:to_proc)
|
48
|
+
object.to_proc.arity == 1
|
49
|
+
else
|
50
|
+
false
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
43
55
|
private
|
44
56
|
|
45
57
|
def inherited(subclass)
|
@@ -48,7 +60,7 @@ class Striuct
|
|
48
60
|
subclass.class_eval {
|
49
61
|
extend ClassMethods
|
50
62
|
include Enumerable
|
51
|
-
|
63
|
+
extend Eqq::Buildable
|
52
64
|
include InstanceMethods
|
53
65
|
|
54
66
|
_init
|
metadata
CHANGED
@@ -1,75 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: striuct
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kenichi Kamiya
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-06-
|
11
|
+
date: 2021-06-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: eqq
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.0.5
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.
|
22
|
+
version: 0.1.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.
|
29
|
+
version: 0.0.5
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 0.
|
33
|
-
- !ruby/object:Gem::Dependency
|
34
|
-
name: optionalargument
|
35
|
-
requirement: !ruby/object:Gem::Requirement
|
36
|
-
requirements:
|
37
|
-
- - ">="
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
version: 0.5.1
|
40
|
-
- - "<"
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
version: 0.6.0
|
43
|
-
type: :runtime
|
44
|
-
prerelease: false
|
45
|
-
version_requirements: !ruby/object:Gem::Requirement
|
46
|
-
requirements:
|
47
|
-
- - ">="
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: 0.5.1
|
50
|
-
- - "<"
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: 0.6.0
|
53
|
-
- !ruby/object:Gem::Dependency
|
54
|
-
name: keyvalidatable
|
55
|
-
requirement: !ruby/object:Gem::Requirement
|
56
|
-
requirements:
|
57
|
-
- - ">="
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
version: 0.2.0
|
60
|
-
- - "<"
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: 0.3.0
|
63
|
-
type: :runtime
|
64
|
-
prerelease: false
|
65
|
-
version_requirements: !ruby/object:Gem::Requirement
|
66
|
-
requirements:
|
67
|
-
- - ">="
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: 0.2.0
|
70
|
-
- - "<"
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
version: 0.3.0
|
32
|
+
version: 0.1.0
|
73
33
|
description: " Struct + validation + inheritable + default_value + etc...\n"
|
74
34
|
email:
|
75
35
|
- kachick1+ruby@gmail.com
|
@@ -80,6 +40,7 @@ files:
|
|
80
40
|
- MIT-LICENSE.txt
|
81
41
|
- README.md
|
82
42
|
- lib/striuct.rb
|
43
|
+
- lib/striuct/bootstrap.rb
|
83
44
|
- lib/striuct/classmethods/README.md
|
84
45
|
- lib/striuct/classmethods/adjustment.rb
|
85
46
|
- lib/striuct/classmethods/attributes.rb
|
@@ -107,7 +68,6 @@ files:
|
|
107
68
|
- lib/striuct/instancemethods/enum.rb
|
108
69
|
- lib/striuct/instancemethods/getter.rb
|
109
70
|
- lib/striuct/instancemethods/hashy.rb
|
110
|
-
- lib/striuct/instancemethods/keyvalidatable.rb
|
111
71
|
- lib/striuct/instancemethods/lock.rb
|
112
72
|
- lib/striuct/instancemethods/object.rb
|
113
73
|
- lib/striuct/instancemethods/requirements.rb
|
@@ -116,7 +76,6 @@ files:
|
|
116
76
|
- lib/striuct/instancemethods/to_s.rb
|
117
77
|
- lib/striuct/instancemethods/validation.rb
|
118
78
|
- lib/striuct/instancemethods/values.rb
|
119
|
-
- lib/striuct/requirements.rb
|
120
79
|
- lib/striuct/singleton_class.rb
|
121
80
|
- lib/striuct/structs.rb
|
122
81
|
homepage: https://github.com/kachick/striuct
|
@@ -142,7 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
142
101
|
- !ruby/object:Gem::Version
|
143
102
|
version: '0'
|
144
103
|
requirements: []
|
145
|
-
rubygems_version: 3.
|
104
|
+
rubygems_version: 3.2.15
|
146
105
|
signing_key:
|
147
106
|
specification_version: 4
|
148
107
|
summary: Struct++
|
@@ -1,11 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
class Striuct
|
4
|
-
module InstanceMethods
|
5
|
-
KeyValidatable.instance_methods.each do |feature|
|
6
|
-
if specific_feature = feature.to_s.sub!('members') { 'autonyms' }
|
7
|
-
def_delegator :self, feature, specific_feature.to_sym
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|