striuct 0.6.1 → 0.7.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/MIT-LICENSE.txt +21 -0
- data/README.md +19 -39
- data/lib/striuct.rb +3 -3
- data/lib/striuct/classmethods/README.md +2 -2
- data/lib/striuct/classmethods/adjustment.rb +15 -13
- data/lib/striuct/classmethods/attributes.rb +94 -92
- data/lib/striuct/classmethods/conflict_management.rb +109 -106
- data/lib/striuct/classmethods/constructor.rb +47 -54
- data/lib/striuct/classmethods/copy.rb +45 -43
- data/lib/striuct/classmethods/default.rb +23 -21
- data/lib/striuct/classmethods/enum.rb +46 -44
- data/lib/striuct/classmethods/fix.rb +23 -21
- data/lib/striuct/classmethods/hashdeepdupulicatable.rb +15 -15
- data/lib/striuct/classmethods/inner.rb +57 -55
- data/lib/striuct/classmethods/length.rb +12 -10
- data/lib/striuct/classmethods/macro.rb +110 -106
- data/lib/striuct/classmethods/names.rb +69 -65
- data/lib/striuct/classmethods/predicate.rb +131 -129
- data/lib/striuct/classmethods/requirements.rb +3 -1
- data/lib/striuct/classmethods/to_struct.rb +21 -18
- data/lib/striuct/classmethods/validation.rb +15 -13
- data/lib/striuct/instancemethods/README.md +2 -2
- data/lib/striuct/instancemethods/assign.rb +29 -27
- data/lib/striuct/instancemethods/cast.rb +28 -26
- data/lib/striuct/instancemethods/compare.rb +26 -24
- data/lib/striuct/instancemethods/default.rb +31 -29
- data/lib/striuct/instancemethods/delegate_class_methods.rb +35 -33
- data/lib/striuct/instancemethods/enum.rb +86 -84
- data/lib/striuct/instancemethods/getter.rb +39 -37
- data/lib/striuct/instancemethods/hashy.rb +99 -97
- data/lib/striuct/instancemethods/keyvalidatable.rb +8 -6
- data/lib/striuct/instancemethods/lock.rb +46 -44
- data/lib/striuct/instancemethods/object.rb +50 -48
- data/lib/striuct/instancemethods/requirements.rb +11 -9
- data/lib/striuct/instancemethods/safety.rb +11 -9
- data/lib/striuct/instancemethods/setter.rb +46 -45
- data/lib/striuct/instancemethods/to_s.rb +39 -37
- data/lib/striuct/instancemethods/validation.rb +31 -29
- data/lib/striuct/instancemethods/values.rb +50 -48
- data/lib/striuct/requirements.rb +3 -1
- data/lib/striuct/singleton_class.rb +12 -17
- data/lib/striuct/structs.rb +3 -3
- metadata +33 -178
- data/.gitignore +0 -35
- data/.travis.yml +0 -17
- data/.yardopts +0 -1
- data/Gemfile +0 -11
- data/MIT-LICENSE +0 -22
- data/Rakefile +0 -11
- data/benchmark/basics.rb +0 -56
- data/example/README.rb +0 -50
- data/example/example1.rb +0 -195
- data/example/example2.rb +0 -20
- data/example/see_trace.rb +0 -32
- data/striuct.gemspec +0 -45
- data/test/helper.rb +0 -3
- data/test/test_sglc-constructor.rb +0 -36
- data/test/test_subc-c-add_members.rb +0 -13
- data/test/test_subc-c-close_member.rb +0 -36
- data/test/test_subc-c-constructor.rb +0 -92
- data/test/test_subc-c-copy.rb +0 -71
- data/test/test_subc-c-freeze.rb +0 -36
- data/test/test_subc-c-inheritable.rb +0 -58
- data/test/test_subc-c-safety_naming.rb +0 -73
- data/test/test_subc-f-alias_member.rb +0 -54
- data/test/test_subc-f-enum.rb +0 -159
- data/test/test_subc-f-predicate.rb +0 -647
- data/test/test_subc-f-to_struct.rb +0 -61
- data/test/test_subc-f-validation_util.rb +0 -59
- data/test/test_subc-f_debug.rb +0 -39
- data/test/test_subc-f_name.rb +0 -525
- data/test/test_subc-i-accessor.rb +0 -138
- data/test/test_subc-i-adjuster.rb +0 -95
- data/test/test_subc-i-assign.rb +0 -53
- data/test/test_subc-i-basic.rb +0 -43
- data/test/test_subc-i-cast.rb +0 -27
- data/test/test_subc-i-compare.rb +0 -52
- data/test/test_subc-i-copy.rb +0 -23
- data/test/test_subc-i-default_value.rb +0 -129
- data/test/test_subc-i-freeze.rb +0 -19
- data/test/test_subc-i-hashlike.rb +0 -144
- data/test/test_subc-i-keyvalidatable.rb +0 -25
- data/test/test_subc-i-lock.rb +0 -40
- data/test/test_subc-i-must.rb +0 -30
- data/test/test_subc-i-to_s_family.rb +0 -26
- data/test/test_subc-i-validation_specific_conditions.rb +0 -297
- data/test/test_subc-i-validation_with_getter.rb +0 -33
- data/test/test_version.rb +0 -13
@@ -1,66 +1,59 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'keyvalidatable'
|
2
|
-
require 'optionalargument'
|
3
4
|
|
4
|
-
class Striuct
|
5
|
+
class Striuct
|
6
|
+
module ClassMethods
|
7
|
+
# @group Constructor
|
5
8
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
new_instance(*values)
|
11
|
-
end
|
9
|
+
# @return [Striuct]
|
10
|
+
def for_values(*values)
|
11
|
+
new_instance(*values)
|
12
|
+
end
|
12
13
|
|
13
|
-
|
14
|
+
alias_method :new, :for_values
|
14
15
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
KeyValidatable.validate_array KeyValidatable.keys_for(pairs).map(&:to_sym),
|
20
|
-
let: all_members
|
16
|
+
# @param [Hash, Struct, Striuct, #each_pair] pairs
|
17
|
+
# @return [Striuct]
|
18
|
+
def for_pairs(pairs)
|
19
|
+
raise TypeError, 'no pairs object' unless pairs.respond_to?(:each_pair)
|
21
20
|
|
22
|
-
|
23
|
-
instance.__send__ :initialize_for_pairs, pairs
|
24
|
-
instance
|
25
|
-
end
|
21
|
+
KeyValidatable.validate_array(KeyValidatable.keys_for(pairs).map(&:to_sym), let: all_members)
|
26
22
|
|
27
|
-
|
23
|
+
instance = allocate
|
24
|
+
instance.__send__(:initialize_for_pairs, pairs)
|
25
|
+
instance
|
26
|
+
end
|
28
27
|
|
29
|
-
|
30
|
-
DEFINE_OptArg = OptionalArgument.define {
|
31
|
-
opt :lock, default: true, condition: BOOLEAN?
|
32
|
-
opt :strict, default: true, condition: BOOLEAN?
|
33
|
-
}
|
28
|
+
alias_method :[], :for_pairs
|
34
29
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
raise ArgumentError, 'must with block' unless block_given?
|
44
|
-
opts = DEFINE_OptArg.parse options
|
45
|
-
|
46
|
-
new.tap {|instance|
|
47
|
-
yield instance
|
48
|
-
|
49
|
-
yets = autonyms.select{|autonym|! instance.assigned?(autonym)}
|
50
|
-
unless yets.empty?
|
51
|
-
raise "not assigned members are, yet '#{yets.inspect} in #{self}'"
|
52
|
-
end
|
53
|
-
|
54
|
-
invalids = autonyms.select{|autonym|! instance.valid?(autonym)}
|
55
|
-
if opts.strict && !invalids.empty?
|
56
|
-
raise Validation::InvalidWritingError,
|
57
|
-
"invalids members are, yet '#{invalids.inspect} in #{self}'"
|
58
|
-
end
|
30
|
+
# for build the fixed object
|
31
|
+
# @param [Boolean] lock
|
32
|
+
# @param [Boolean] strict
|
33
|
+
# @yieldparam [Striuct] instance
|
34
|
+
# @yieldreturn [Striuct] instance
|
35
|
+
# @return [void]
|
36
|
+
def define(lock: true, strict: true)
|
37
|
+
raise ArgumentError, 'must with block' unless block_given?
|
59
38
|
|
60
|
-
|
61
|
-
|
62
|
-
end
|
39
|
+
new.tap { |instance|
|
40
|
+
yield instance
|
63
41
|
|
64
|
-
|
42
|
+
yets = autonyms.select { |autonym| !instance.assigned?(autonym) }
|
43
|
+
unless yets.empty?
|
44
|
+
raise "not assigned members are, yet '#{yets.inspect} in #{self}'"
|
45
|
+
end
|
65
46
|
|
66
|
-
|
47
|
+
invalids = autonyms.select { |autonym| !instance.valid?(autonym) }
|
48
|
+
if strict && !invalids.empty?
|
49
|
+
raise Validation::InvalidWritingError,
|
50
|
+
"invalids members are, yet '#{invalids.inspect} in #{self}'"
|
51
|
+
end
|
52
|
+
|
53
|
+
instance.lock_all if lock
|
54
|
+
}
|
55
|
+
end
|
56
|
+
|
57
|
+
# @endgroup
|
58
|
+
end
|
59
|
+
end
|
@@ -1,52 +1,54 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
class Striuct
|
4
|
+
module ClassMethods
|
5
|
+
# @group Basic Methods for Ruby's Object
|
4
6
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
# @return [Class]
|
8
|
+
def clone
|
9
|
+
ret = super
|
10
|
+
ret.__send__(:close_member) if closed?
|
11
|
+
ret
|
12
|
+
end
|
11
13
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
14
|
+
# @return [Class]
|
15
|
+
def dup
|
16
|
+
copy_variables!(super)
|
17
|
+
end
|
16
18
|
|
17
|
-
|
18
|
-
|
19
|
-
def inherited(subclass)
|
20
|
-
ret = super subclass
|
21
|
-
copy_variables! subclass
|
22
|
-
ret
|
23
|
-
end
|
24
|
-
|
25
|
-
def initialize_copy(original)
|
26
|
-
ret = super original
|
27
|
-
@autonyms = @autonyms.dup
|
28
|
-
@aliases = @aliases.dup
|
29
|
-
@attributes = @attributes.deep_dup
|
30
|
-
ret
|
31
|
-
end
|
19
|
+
private
|
32
20
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
attributes = @attributes.deep_dup
|
38
|
-
conflict_management = @conflict_management_level
|
39
|
-
|
40
|
-
familar_class.class_eval do
|
41
|
-
@autonyms = autonyms
|
42
|
-
@aliases = aliases
|
43
|
-
@attributes = attributes
|
44
|
-
@conflict_management_level = conflict_management
|
21
|
+
def inherited(subclass)
|
22
|
+
ret = super(subclass)
|
23
|
+
copy_variables!(subclass)
|
24
|
+
ret
|
45
25
|
end
|
46
26
|
|
47
|
-
|
48
|
-
|
27
|
+
def initialize_copy(original)
|
28
|
+
ret = super(original)
|
29
|
+
@autonyms = @autonyms.dup
|
30
|
+
@aliases = @aliases.dup
|
31
|
+
@attributes = @attributes.deep_dup
|
32
|
+
ret
|
33
|
+
end
|
49
34
|
|
50
|
-
|
35
|
+
# @return [familiar_class]
|
36
|
+
def copy_variables!(familiar_class)
|
37
|
+
autonyms = @autonyms.dup
|
38
|
+
aliases = @aliases.dup
|
39
|
+
attributes = @attributes.deep_dup
|
40
|
+
conflict_management = @conflict_management_level
|
41
|
+
|
42
|
+
familiar_class.class_eval do
|
43
|
+
@autonyms = autonyms
|
44
|
+
@aliases = aliases
|
45
|
+
@attributes = attributes
|
46
|
+
@conflict_management_level = conflict_management
|
47
|
+
end
|
48
|
+
|
49
|
+
familiar_class
|
50
|
+
end
|
51
51
|
|
52
|
-
|
52
|
+
# @endgroup
|
53
|
+
end
|
54
|
+
end
|
@@ -1,24 +1,26 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
def default_value_for(key)
|
7
|
-
autonym = autonym_for_key key
|
8
|
-
raise KeyError unless with_default? autonym
|
9
|
-
|
10
|
-
_attributes_for(autonym).default_value
|
11
|
-
end
|
3
|
+
class Striuct
|
4
|
+
module ClassMethods
|
5
|
+
# @group With default value
|
12
6
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
end
|
21
|
-
|
22
|
-
# @endgroup
|
7
|
+
# @param [Symbol, String, #to_sym, Integer, #to_int] key - name / index
|
8
|
+
def default_value_for(key)
|
9
|
+
autonym = autonym_for_key(key)
|
10
|
+
raise KeyError unless with_default?(autonym)
|
11
|
+
|
12
|
+
_attributes_for(autonym).default_value
|
13
|
+
end
|
23
14
|
|
24
|
-
|
15
|
+
# @param [Symbol, String, #to_sym, Integer, #to_int] key - name / index
|
16
|
+
# @return [Symbol] :value / :proc
|
17
|
+
def default_type_for(key)
|
18
|
+
autonym = autonym_for_key(key)
|
19
|
+
raise KeyError unless with_default?(autonym)
|
20
|
+
|
21
|
+
_attributes_for(autonym).default_type
|
22
|
+
end
|
23
|
+
|
24
|
+
# @endgroup
|
25
|
+
end
|
26
|
+
end
|
@@ -1,45 +1,47 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
return
|
11
|
-
|
12
|
-
|
13
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Striuct
|
4
|
+
module ClassMethods
|
5
|
+
# @group Enumerative
|
6
|
+
|
7
|
+
# @yield [autonym]
|
8
|
+
# @yieldparam [Symbol] autonym - sequential under defined
|
9
|
+
# @yieldreturn [Class] self
|
10
|
+
# @return [Enumerator]
|
11
|
+
def each_autonym
|
12
|
+
return to_enum(__callee__) { size } unless block_given?
|
13
|
+
|
14
|
+
@autonyms.each { |autonym| yield autonym }
|
15
|
+
self
|
16
|
+
end
|
17
|
+
|
18
|
+
alias_method :each_member, :each_autonym
|
19
|
+
|
20
|
+
# @yield [index]
|
21
|
+
# @yieldparam [Integer] Index
|
22
|
+
# @yieldreturn [Class] self
|
23
|
+
# @return [Enumerator]
|
24
|
+
def each_index
|
25
|
+
return to_enum(__callee__) { size } unless block_given?
|
26
|
+
|
27
|
+
@autonyms.each_index { |index| yield index }
|
28
|
+
self
|
29
|
+
end
|
30
|
+
|
31
|
+
# @yield [autonym, index]
|
32
|
+
# @yieldparam [Symbol] autonym
|
33
|
+
# @yieldparam [Integer] index
|
34
|
+
# @yieldreturn [Class] self
|
35
|
+
# @return [Enumerator]
|
36
|
+
def each_autonym_with_index
|
37
|
+
return to_enum(__callee__) { size } unless block_given?
|
38
|
+
|
39
|
+
@autonyms.each_with_index { |autonym, index| yield autonym, index }
|
40
|
+
self
|
41
|
+
end
|
42
|
+
|
43
|
+
alias_method :each_member_with_index, :each_autonym_with_index
|
44
|
+
|
45
|
+
# @endgroup
|
14
46
|
end
|
15
|
-
|
16
|
-
alias_method :each_member, :each_autonym
|
17
|
-
|
18
|
-
# @yield [index]
|
19
|
-
# @yieldparam [Integer] Index
|
20
|
-
# @yieldreturn [Class] self
|
21
|
-
# @return [Enumerator]
|
22
|
-
def each_index
|
23
|
-
return to_enum(__callee__) { size } unless block_given?
|
24
|
-
|
25
|
-
@autonyms.each_index{|index|yield index}
|
26
|
-
self
|
27
|
-
end
|
28
|
-
|
29
|
-
# @yield [autonym, index]
|
30
|
-
# @yieldparam [Symbol] autonym
|
31
|
-
# @yieldparam [Integer] index
|
32
|
-
# @yieldreturn [Class] self
|
33
|
-
# @return [Enumerator]
|
34
|
-
def each_autonym_with_index
|
35
|
-
return to_enum(__callee__) { size } unless block_given?
|
36
|
-
|
37
|
-
@autonyms.each_with_index{|autonym, index|yield autonym, index}
|
38
|
-
self
|
39
|
-
end
|
40
|
-
|
41
|
-
alias_method :each_member_with_index, :each_autonym_with_index
|
42
|
-
|
43
|
-
# @endgroup
|
44
|
-
|
45
|
-
end; end
|
47
|
+
end
|
@@ -1,28 +1,30 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
class Striuct
|
4
|
+
module ClassMethods
|
5
|
+
# @group Fix inner data structures
|
4
6
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
# @return [self]
|
8
|
+
def freeze
|
9
|
+
[@autonyms, @attributes, @aliases].each(&:freeze)
|
10
|
+
super
|
11
|
+
end
|
10
12
|
|
11
|
-
|
12
|
-
|
13
|
-
|
13
|
+
def closed?
|
14
|
+
[@autonyms, @attributes, @aliases].any?(&:frozen?)
|
15
|
+
end
|
14
16
|
|
15
|
-
|
17
|
+
private
|
16
18
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
alias_method :fix_structural, :close_member
|
24
|
-
alias_method :close, :close_member
|
19
|
+
# @return [self]
|
20
|
+
def close_member
|
21
|
+
[@autonyms, @attributes, @aliases].each(&:freeze)
|
22
|
+
self
|
23
|
+
end
|
25
24
|
|
26
|
-
|
25
|
+
alias_method :fix_structural, :close_member
|
26
|
+
alias_method :close, :close_member
|
27
27
|
|
28
|
-
|
28
|
+
# @endgroup
|
29
|
+
end
|
30
|
+
end
|
@@ -1,19 +1,19 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
3
|
+
class Striuct
|
4
|
+
module ClassMethods
|
5
|
+
module HashDeepDupulicatable
|
6
|
+
# @return [Hash]
|
7
|
+
def deep_dup
|
8
|
+
dup.tap { |h|
|
9
|
+
each_pair do |key, value|
|
10
|
+
h[key] = value.dup
|
11
|
+
end
|
12
|
+
h.extend HashDeepDupulicatable
|
13
|
+
}
|
14
|
+
end
|
13
15
|
end
|
14
16
|
|
17
|
+
private_constant :HashDeepDupulicatable
|
15
18
|
end
|
16
|
-
|
17
|
-
private_constant :HashDeepDupulicatable
|
18
|
-
|
19
|
-
end; end
|
19
|
+
end
|
@@ -1,71 +1,73 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
# @group Inner Methods
|
4
|
-
|
5
|
-
# for debug
|
6
|
-
# @return [Hash]
|
7
|
-
def attributes
|
8
|
-
{
|
9
|
-
autonyms: @autonyms.dup,
|
10
|
-
aliases: @aliases.dup,
|
11
|
-
conflict_management_level: @conflict_management_level,
|
12
|
-
attributes_each_autonym: @attributes.dup
|
13
|
-
}
|
14
|
-
end
|
15
|
-
|
16
|
-
private
|
1
|
+
# frozen_string_literal: true
|
17
2
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
@aliases = {} # aliased => autonym
|
22
|
-
@conflict_management_level = DEFAULT_CONFLICT_MANAGEMENT_LEVEL
|
23
|
-
end
|
3
|
+
class Striuct
|
4
|
+
module ClassMethods
|
5
|
+
# @group Inner Methods
|
24
6
|
|
25
|
-
|
26
|
-
|
27
|
-
|
7
|
+
# for debug
|
8
|
+
# @return [Hash]
|
9
|
+
def attributes
|
10
|
+
{
|
11
|
+
autonyms: @autonyms.dup,
|
12
|
+
aliases: @aliases.dup,
|
13
|
+
conflict_management_level: @conflict_management_level,
|
14
|
+
attributes_each_autonym: @attributes.dup
|
15
|
+
}
|
16
|
+
end
|
28
17
|
|
29
|
-
|
30
|
-
@autonyms << autonym
|
31
|
-
end
|
18
|
+
private
|
32
19
|
|
33
|
-
|
34
|
-
|
35
|
-
|
20
|
+
def _init
|
21
|
+
@autonyms = []
|
22
|
+
@attributes = {}.extend HashDeepDupulicatable # autonym => Attributes
|
23
|
+
@aliases = {} # aliased => autonym
|
24
|
+
@conflict_management_level = DEFAULT_CONFLICT_MANAGEMENT_LEVEL
|
25
|
+
end
|
36
26
|
|
37
|
-
|
38
|
-
|
39
|
-
|
27
|
+
def _add_autonym(autonym)
|
28
|
+
autonym = autonym.to_sym
|
29
|
+
raise NameError, 'already defined' if member?(autonym)
|
40
30
|
|
41
|
-
|
42
|
-
|
43
|
-
|
31
|
+
@attributes[autonym] = Attributes.new
|
32
|
+
@autonyms << autonym
|
33
|
+
end
|
44
34
|
|
45
|
-
|
46
|
-
|
47
|
-
_get autonym
|
35
|
+
def _attributes_for(autonym)
|
36
|
+
@attributes.fetch(autonym)
|
48
37
|
end
|
49
|
-
|
50
|
-
nil
|
51
|
-
end
|
52
38
|
|
53
|
-
|
54
|
-
|
55
|
-
_attributes_for(autonym).condition = condition
|
39
|
+
def _check_frozen
|
40
|
+
raise "can't modify frozen Class" if frozen?
|
56
41
|
end
|
57
42
|
|
58
|
-
|
59
|
-
|
43
|
+
def _check_closed
|
44
|
+
raise "can't modify closed member attributes in #{self}" if closed?
|
60
45
|
end
|
61
46
|
|
62
|
-
|
63
|
-
|
47
|
+
def _def_getter(autonym)
|
48
|
+
define_method(autonym) do
|
49
|
+
_get(autonym)
|
50
|
+
end
|
51
|
+
|
52
|
+
nil
|
64
53
|
end
|
65
|
-
|
66
|
-
nil
|
67
|
-
end
|
68
54
|
|
69
|
-
|
55
|
+
def _def_setter(autonym, condition, &adjuster)
|
56
|
+
unless ANYTHING.equal?(condition)
|
57
|
+
_attributes_for(autonym).condition = condition
|
58
|
+
end
|
59
|
+
|
60
|
+
if adjuster
|
61
|
+
_attributes_for(autonym).adjuster = adjuster
|
62
|
+
end
|
70
63
|
|
71
|
-
|
64
|
+
define_method(:"#{autonym}=") do |value|
|
65
|
+
_set(autonym, value)
|
66
|
+
end
|
67
|
+
|
68
|
+
nil
|
69
|
+
end
|
70
|
+
|
71
|
+
# @endgroup
|
72
|
+
end
|
73
|
+
end
|