striuct 0.3.4 → 0.3.5
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.
- data/History.rdoc +6 -0
- data/Manifest.txt +13 -7
- data/README.md +12 -10
- data/example/README.rb +5 -3
- data/lib/striuct/attributes.rb +114 -0
- data/lib/striuct/classmethods/adjustment.rb +8 -15
- data/lib/striuct/classmethods/copy.rb +55 -0
- data/lib/striuct/classmethods/default.rb +18 -13
- data/lib/striuct/classmethods/enum.rb +1 -3
- data/lib/striuct/classmethods/fix.rb +28 -0
- data/lib/striuct/classmethods/hashy.rb +22 -0
- data/lib/striuct/classmethods/inner.rb +24 -58
- data/lib/striuct/classmethods/macro.rb +33 -47
- data/lib/striuct/classmethods/named.rb +52 -40
- data/lib/striuct/classmethods/prevent_conflicts.rb +1 -1
- data/lib/striuct/classmethods/requiremnets.rb +4 -2
- data/lib/striuct/classmethods/validation.rb +19 -22
- data/lib/striuct/hashdeepdupulicatable.rb +21 -0
- data/lib/striuct/instancemethods/assign.rb +9 -6
- data/lib/striuct/instancemethods/default.rb +1 -1
- data/lib/striuct/instancemethods/delegate_class_methods.rb +11 -5
- data/lib/striuct/instancemethods/hashy.rb +1 -1
- data/lib/striuct/instancemethods/{inner.rb → inner_accessor.rb} +6 -13
- data/lib/striuct/instancemethods/lock.rb +7 -4
- data/lib/striuct/instancemethods/object.rb +25 -28
- data/lib/striuct/instancemethods/requirements.rb +3 -2
- data/lib/striuct/instancemethods/subscript.rb +4 -32
- data/lib/striuct/instancemethods/to_s.rb +35 -0
- data/lib/striuct/instancemethods/validation.rb +1 -1
- data/lib/striuct/instancemethods/values.rb +0 -17
- data/lib/striuct/requirements.rb +3 -2
- data/lib/striuct/singleton_class.rb +6 -4
- data/lib/striuct/version.rb +1 -1
- data/test/test_striuct-subclass-class-copy.rb +71 -0
- data/test/{test_striuct-subclass-instance-cloning.rb → test_striuct-subclass-instance-copy.rb} +2 -2
- metadata +13 -9
- data/lib/striuct/classmethods/object.rb +0 -54
- data/lib/striuct/specificcontainer.rb +0 -19
- data/test/test_striuct-subclass-class-cloning.rb +0 -21
data/History.rdoc
CHANGED
data/Manifest.txt
CHANGED
@@ -9,20 +9,26 @@ striuct.gemspec
|
|
9
9
|
.yardopts
|
10
10
|
|
11
11
|
lib/striuct.rb
|
12
|
+
lib/striuct/requirements.rb
|
12
13
|
lib/striuct/version.rb
|
13
|
-
lib/striuct/
|
14
|
+
lib/striuct/structs.rb
|
15
|
+
lib/striuct/attributes.rb
|
16
|
+
lib/striuct/hashdeepdupulicatable.rb
|
14
17
|
lib/striuct/singleton_class.rb
|
18
|
+
lib/striuct/classmethods.rb
|
19
|
+
lib/striuct/instancemethods.rb
|
15
20
|
|
16
21
|
lib/striuct/classmethods/README.md
|
17
|
-
lib/striuct/classmethods.rb
|
18
22
|
lib/striuct/classmethods/requirements.rb
|
19
23
|
lib/striuct/classmethods/inner.rb
|
20
24
|
lib/striuct/classmethods/named.rb
|
21
|
-
lib/striuct/classmethods/
|
25
|
+
lib/striuct/classmethods/copy.rb
|
26
|
+
lib/striuct/classmethods/fix.rb
|
22
27
|
lib/striuct/classmethods/length.rb
|
23
28
|
lib/striuct/classmethods/to_struct.rb
|
24
29
|
lib/striuct/classmethods/constructor.rb
|
25
30
|
lib/striuct/classmethods/enum.rb
|
31
|
+
lib/striuct/classmethods/hashy.rb
|
26
32
|
lib/striuct/classmethods/default.rb
|
27
33
|
lib/striuct/classmethods/adjustment.rb
|
28
34
|
lib/striuct/classmethods/macro.rb
|
@@ -30,13 +36,13 @@ lib/striuct/classmethods/prevent_conflicts.rb
|
|
30
36
|
lib/striuct/classmethods/validation.rb
|
31
37
|
|
32
38
|
lib/striuct/instancemethods/README.md
|
33
|
-
lib/striuct/instancemethods.rb
|
34
39
|
lib/striuct/instancemethods/requirements.rb
|
35
40
|
lib/striuct/instancemethods/delegate_class_methods.rb
|
36
41
|
lib/striuct/instancemethods/keyvalidatable.rb
|
37
|
-
lib/striuct/instancemethods/
|
42
|
+
lib/striuct/instancemethods/inner_accessor.rb
|
38
43
|
lib/striuct/instancemethods/object.rb
|
39
44
|
lib/striuct/instancemethods/compare.rb
|
45
|
+
lib/striuct/instancemethods/to_s.rb
|
40
46
|
lib/striuct/instancemethods/values.rb
|
41
47
|
lib/striuct/instancemethods/cast.rb
|
42
48
|
lib/striuct/instancemethods/default.rb
|
@@ -51,7 +57,7 @@ lib/striuct/instancemethods/safety.rb
|
|
51
57
|
test/helper.rb
|
52
58
|
test/test_striuct-version.rb
|
53
59
|
test/test_striuct-singleton_class-define.rb
|
54
|
-
test/test_striuct-subclass-class-
|
60
|
+
test/test_striuct-subclass-class-copy.rb
|
55
61
|
test/test_striuct-subclass-class-close.rb
|
56
62
|
test/test_striuct-subclass-class-freeze.rb
|
57
63
|
test/test_striuct-subclass-class-constructor.rb
|
@@ -66,7 +72,7 @@ test/test_striuct-subclass-instance-accessor.rb
|
|
66
72
|
test/test_striuct-subclass-instance-adjuster.rb
|
67
73
|
test/test_striuct-subclass-instance-assign.rb
|
68
74
|
test/test_striuct-subclass-instance-basic.rb
|
69
|
-
test/test_striuct-subclass-instance-
|
75
|
+
test/test_striuct-subclass-instance-copy.rb
|
70
76
|
test/test_striuct-subclass-instance-compare.rb
|
71
77
|
test/test_striuct-subclass-instance-default_value.rb
|
72
78
|
test/test_striuct-subclass-instance-enum.rb
|
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
striuct
|
2
2
|
=======
|
3
3
|
|
4
|
+
[](http://travis-ci.org/kachick/striuct)
|
5
|
+
|
4
6
|
Description
|
5
7
|
-----------
|
6
8
|
|
@@ -46,8 +48,8 @@ class User < Person # Inheritable
|
|
46
48
|
member :id, Integer, # Looks typed validation
|
47
49
|
default_proc: ->{User.next_id} # With default value
|
48
50
|
|
51
|
+
@id = 0
|
49
52
|
def self.next_id
|
50
|
-
@id ||= 0
|
51
53
|
@id += 1
|
52
54
|
end
|
53
55
|
end
|
@@ -64,8 +66,10 @@ ken.id #=> 2
|
|
64
66
|
```ruby
|
65
67
|
class Foo < Striuct
|
66
68
|
member :foo
|
67
|
-
member :bar, Numeric,
|
68
|
-
|
69
|
+
member :bar, Numeric, # First validation under Numeric
|
70
|
+
inference: true # And use inference Validation
|
71
|
+
member :with_adjuster, Integer,
|
72
|
+
&->v{Integer v} # Use adjuster before a setter
|
69
73
|
end
|
70
74
|
|
71
75
|
foo = Foo.new
|
@@ -89,19 +93,17 @@ foo.with_adjuster = '5'
|
|
89
93
|
foo.with_adjuster #=> 5 # Casted via adjuster
|
90
94
|
```
|
91
95
|
|
96
|
+
### How to build a flexible condition
|
92
97
|
|
93
|
-
|
94
|
-
|
95
|
-
#### Basics
|
96
|
-
|
97
|
-
example/*
|
98
|
+
* That from validation library.
|
99
|
+
See the [validation-API](http://kachick.github.com/docs/validation/api/frames.html)
|
98
100
|
|
99
101
|
Requirements
|
100
102
|
-------------
|
101
103
|
|
102
104
|
* Ruby 1.9.2 or later [MRI/YARV, Rubinius](http://travis-ci.org/#!/kachick/striuct)
|
103
|
-
* validation - 0.0.3
|
104
|
-
* keyvalidatable - 0.0.3
|
105
|
+
* [validation](https://github.com/kachick/validation) - 0.0.3
|
106
|
+
* [keyvalidatable](https://github.com/kachick/keyvalidatable) - 0.0.3
|
105
107
|
|
106
108
|
Install
|
107
109
|
-------
|
data/example/README.rb
CHANGED
@@ -11,8 +11,8 @@ class User < Person # Inheritable
|
|
11
11
|
member :id, Integer, # Looks typed validation
|
12
12
|
default_proc: ->{User.next_id} # With default value
|
13
13
|
|
14
|
+
@id = 0
|
14
15
|
def self.next_id
|
15
|
-
@id ||= 0
|
16
16
|
@id += 1
|
17
17
|
end
|
18
18
|
end
|
@@ -26,8 +26,10 @@ p ken.id #=> 2
|
|
26
26
|
|
27
27
|
class Foo < Striuct
|
28
28
|
member :foo
|
29
|
-
member :bar, Numeric,
|
30
|
-
|
29
|
+
member :bar, Numeric,
|
30
|
+
inference: true
|
31
|
+
member :with_adjuster, Integer,
|
32
|
+
&->v{Integer v}
|
31
33
|
end
|
32
34
|
|
33
35
|
foo = Foo.new
|
@@ -0,0 +1,114 @@
|
|
1
|
+
class Striuct
|
2
|
+
|
3
|
+
# Attributes for each Member(Autonym)
|
4
|
+
class Attributes
|
5
|
+
|
6
|
+
VALUES = [:condition, :adjuster].freeze
|
7
|
+
BOOLEANS = [
|
8
|
+
:inference,
|
9
|
+
:validate_with_setter,
|
10
|
+
:validate_with_getter
|
11
|
+
].freeze
|
12
|
+
|
13
|
+
def initialize
|
14
|
+
@hash = {
|
15
|
+
inference: false,
|
16
|
+
validate_with_setter: false,
|
17
|
+
validate_with_getter: false
|
18
|
+
}
|
19
|
+
end
|
20
|
+
|
21
|
+
VALUES.each do |role|
|
22
|
+
define_method "has_#{role}?".to_sym do
|
23
|
+
@hash.has_key? role
|
24
|
+
end
|
25
|
+
|
26
|
+
define_method role do
|
27
|
+
@hash.fetch role
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def condition=(condition)
|
32
|
+
unless ::Validation.conditionable? condition
|
33
|
+
raise TypeError, 'wrong object for condition'
|
34
|
+
end
|
35
|
+
|
36
|
+
@hash[:condition] = condition
|
37
|
+
end
|
38
|
+
|
39
|
+
def adjuster=(adjuster)
|
40
|
+
unless ::Validation.adjustable? adjuster
|
41
|
+
raise ArgumentError, "wrong number of block argument #{arity} for 1"
|
42
|
+
end
|
43
|
+
|
44
|
+
@hash[:adjuster] = adjuster
|
45
|
+
end
|
46
|
+
|
47
|
+
BOOLEANS.each do |role|
|
48
|
+
define_method "#{role}?".to_sym do
|
49
|
+
@hash.fetch role
|
50
|
+
end
|
51
|
+
|
52
|
+
define_method "#{role}=".to_sym do |arg|
|
53
|
+
raise TypeError unless arg.equal?(true) or arg.equal?(false)
|
54
|
+
|
55
|
+
@hash[role] = arg
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def has_default?
|
60
|
+
@hash.has_key? :default_value
|
61
|
+
end
|
62
|
+
|
63
|
+
def default_value
|
64
|
+
@hash.fetch :default_value
|
65
|
+
end
|
66
|
+
|
67
|
+
def default_type
|
68
|
+
@hash.fetch :default_type
|
69
|
+
end
|
70
|
+
|
71
|
+
# @param [Symbol] type - :value / :lazy
|
72
|
+
def set_default(value, type)
|
73
|
+
raise TypeError unless type.equal?(:value) or type.equal?(:lazy)
|
74
|
+
check_default_lazy_proc value if type.equal?(:lazy)
|
75
|
+
|
76
|
+
@hash[:default_type] = type
|
77
|
+
@hash[:default_value] = value
|
78
|
+
end
|
79
|
+
|
80
|
+
def check_default_lazy_proc(_proc)
|
81
|
+
raise TypeError unless _proc.respond_to? :call
|
82
|
+
arity = _proc.arity
|
83
|
+
unless arity <= 2
|
84
|
+
raise ArgumentError, "wrong number of block parameter #{arity} for 0..2"
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def freeze
|
89
|
+
ret = super
|
90
|
+
@hash.freeze
|
91
|
+
ret
|
92
|
+
end
|
93
|
+
|
94
|
+
def dup
|
95
|
+
ret = super
|
96
|
+
@hash = @hash.dup
|
97
|
+
ret
|
98
|
+
end
|
99
|
+
|
100
|
+
private
|
101
|
+
|
102
|
+
def initialize_copy(original)
|
103
|
+
ret = super original
|
104
|
+
@hash = @hash.dup
|
105
|
+
ret
|
106
|
+
end
|
107
|
+
|
108
|
+
end
|
109
|
+
|
110
|
+
if respond_to? :private_constant
|
111
|
+
private_constant :Attributes
|
112
|
+
end
|
113
|
+
|
114
|
+
end
|
@@ -4,30 +4,23 @@ class Striuct; module ClassMethods
|
|
4
4
|
|
5
5
|
# @param [Symbol, String] name
|
6
6
|
def has_adjuster?(name)
|
7
|
-
autonym =
|
7
|
+
autonym = autonym_for_name name
|
8
8
|
|
9
|
-
|
9
|
+
_attributes_for(autonym).has_adjuster?
|
10
10
|
end
|
11
11
|
|
12
|
-
alias_method :has_flavor?, :has_adjuster?
|
12
|
+
alias_method :has_flavor?, :has_adjuster? # obsolute
|
13
13
|
|
14
14
|
# @param [Symbol, String] name
|
15
15
|
def adjuster_for(name)
|
16
|
-
|
16
|
+
return nil unless has_adjuster? name
|
17
|
+
autonym = autonym_for_name name
|
17
18
|
|
18
|
-
|
19
|
+
_attributes_for(autonym).adjuster
|
19
20
|
end
|
20
21
|
|
21
|
-
alias_method :flavor_for, :adjuster_for
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
def _adjuster_for(autonym)
|
26
|
-
@adjusters[autonym]
|
27
|
-
end
|
28
|
-
|
29
|
-
alias_method :_flavor_for, :_adjuster_for
|
22
|
+
alias_method :flavor_for, :adjuster_for # obsolute
|
30
23
|
|
31
24
|
# @endgroup
|
32
25
|
|
33
|
-
end; end
|
26
|
+
end; end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
class Striuct; module ClassMethods
|
2
|
+
|
3
|
+
# @group Basic Methods for Ruby's Object
|
4
|
+
|
5
|
+
# @return [Module]
|
6
|
+
def dup
|
7
|
+
autonyms = @autonyms.dup
|
8
|
+
aliases = @aliases.dup
|
9
|
+
attributes = @attributes.deep_dup
|
10
|
+
|
11
|
+
super.tap {|ret|
|
12
|
+
ret.instance_eval do
|
13
|
+
@autonyms = autonyms
|
14
|
+
@aliases = aliases
|
15
|
+
@attributes = attributes
|
16
|
+
end
|
17
|
+
}
|
18
|
+
end
|
19
|
+
|
20
|
+
# @return [Module]
|
21
|
+
def clone
|
22
|
+
ret = super
|
23
|
+
ret.__send__ :close if closed?
|
24
|
+
ret
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def inherited(subclass)
|
30
|
+
autonyms = @autonyms.dup
|
31
|
+
aliases = @aliases.dup
|
32
|
+
attributes = @attributes.deep_dup
|
33
|
+
protect_level = @protect_level
|
34
|
+
|
35
|
+
subclass.class_eval do
|
36
|
+
original_inherited subclass
|
37
|
+
|
38
|
+
@autonyms = autonyms
|
39
|
+
@aliases = aliases
|
40
|
+
@attributes = attributes
|
41
|
+
@protect_level = protect_level
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def initialize_copy(original)
|
46
|
+
ret = super original
|
47
|
+
@autonyms = @autonyms.dup
|
48
|
+
@aliases = @aliases.dup
|
49
|
+
@attributes = @attributes.deep_dup
|
50
|
+
ret
|
51
|
+
end
|
52
|
+
|
53
|
+
# @endgroup
|
54
|
+
|
55
|
+
end; end
|
@@ -4,25 +4,30 @@ class Striuct; module ClassMethods
|
|
4
4
|
|
5
5
|
# @param [Symbol, String] name
|
6
6
|
def has_default?(name)
|
7
|
-
autonym =
|
7
|
+
autonym = autonym_for_name name
|
8
8
|
|
9
|
-
|
9
|
+
_attributes_for(autonym).has_default?
|
10
10
|
end
|
11
11
|
|
12
12
|
# @param [Symbol, String] name
|
13
|
-
def
|
14
|
-
autonym =
|
13
|
+
def default_value_for(name)
|
14
|
+
autonym = autonym_for_name name
|
15
15
|
raise "#{name} has no default value" unless has_default? autonym
|
16
|
-
|
17
|
-
|
18
|
-
end
|
19
|
-
|
20
|
-
private
|
21
|
-
|
22
|
-
def _default_for(autonym)
|
23
|
-
@defaults[autonym]
|
16
|
+
|
17
|
+
_attributes_for(autonym).default_value
|
24
18
|
end
|
25
19
|
|
20
|
+
alias_method :default_for, :default_value_for
|
21
|
+
|
22
|
+
# @param [Symbol, String] name
|
23
|
+
# @return [Symbol] :value / :proc
|
24
|
+
def default_type_for(name)
|
25
|
+
autonym = autonym_for_name name
|
26
|
+
raise "#{name} has no default value" unless has_default? autonym
|
27
|
+
|
28
|
+
_attributes_for(autonym).default_type
|
29
|
+
end
|
30
|
+
|
26
31
|
# @endgroup
|
27
32
|
|
28
|
-
end; end
|
33
|
+
end; end
|
@@ -15,7 +15,6 @@ class Striuct; module ClassMethods
|
|
15
15
|
|
16
16
|
alias_method :each_name, :each_autonym
|
17
17
|
alias_method :each_member, :each_autonym
|
18
|
-
alias_method :each_key, :each_autonym
|
19
18
|
|
20
19
|
# @yield [index]
|
21
20
|
# @yieldparam [Integer] Index
|
@@ -42,8 +41,7 @@ class Striuct; module ClassMethods
|
|
42
41
|
|
43
42
|
alias_method :each_name_with_index, :each_autonym_with_index
|
44
43
|
alias_method :each_member_with_index, :each_autonym_with_index
|
45
|
-
alias_method :each_key_with_index, :each_autonym_with_index
|
46
44
|
|
47
45
|
# @endgroup
|
48
46
|
|
49
|
-
end; end
|
47
|
+
end; end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
class Striuct; module ClassMethods
|
2
|
+
|
3
|
+
# @group Fix inner data structures
|
4
|
+
|
5
|
+
# @return [self]
|
6
|
+
def freeze
|
7
|
+
[@autonyms, @attributes, @aliases].each(&:freeze)
|
8
|
+
super
|
9
|
+
end
|
10
|
+
|
11
|
+
def closed?
|
12
|
+
[@autonyms, @attributes, @aliases].any?(&:frozen?)
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
# @return [self]
|
18
|
+
def close_member
|
19
|
+
[@autonyms, @attributes, @aliases].each(&:freeze)
|
20
|
+
self
|
21
|
+
end
|
22
|
+
|
23
|
+
alias_method :fix_structural, :close_member
|
24
|
+
alias_method :close, :close_member
|
25
|
+
|
26
|
+
# @endgroup
|
27
|
+
|
28
|
+
end; end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require_relative 'named'
|
2
|
+
require_relative 'enum'
|
3
|
+
|
4
|
+
class Striuct; module ClassMethods
|
5
|
+
|
6
|
+
# @group Like Ruby's Hash
|
7
|
+
|
8
|
+
alias_method :keys, :autonyms
|
9
|
+
alias_method :has_key?, :has_member?
|
10
|
+
alias_method :key?, :has_key?
|
11
|
+
alias_method :each_key, :each_autonym
|
12
|
+
|
13
|
+
# @endgroup
|
14
|
+
|
15
|
+
|
16
|
+
# @group Like Ruby's Hash +
|
17
|
+
|
18
|
+
alias_method :each_key_with_index, :each_autonym_with_index
|
19
|
+
|
20
|
+
# @endgroup
|
21
|
+
|
22
|
+
end; end
|
@@ -4,89 +4,55 @@ class Striuct; module ClassMethods
|
|
4
4
|
|
5
5
|
private
|
6
6
|
|
7
|
-
def
|
8
|
-
|
9
|
-
|
10
|
-
end
|
11
|
-
|
12
|
-
nil
|
13
|
-
end
|
7
|
+
def _add_autonym(autonym)
|
8
|
+
autonym = _nameable_for autonym
|
9
|
+
raise NameError, 'already defined' if member? autonym
|
14
10
|
|
15
|
-
|
16
|
-
@
|
17
|
-
end
|
18
|
-
|
19
|
-
def _mark_setter_validation(autonym)
|
20
|
-
@setter_validations[autonym] = true
|
11
|
+
@attributes[autonym] = Attributes.new
|
12
|
+
@autonyms << autonym
|
21
13
|
end
|
22
14
|
|
23
|
-
def
|
24
|
-
@
|
15
|
+
def _attributes_for(autonym)
|
16
|
+
@attributes.fetch autonym
|
25
17
|
end
|
26
18
|
|
27
|
-
def
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
end
|
34
|
-
|
35
|
-
def _set_condition(autonym, condition)
|
36
|
-
@conditions[autonym] = condition
|
37
|
-
end
|
38
|
-
|
39
|
-
def _set_default_value(autonym, value)
|
40
|
-
@defaults[autonym] = value
|
19
|
+
def _def_getter!(autonym)
|
20
|
+
define_method autonym do
|
21
|
+
_get autonym
|
22
|
+
end
|
23
|
+
|
24
|
+
nil
|
41
25
|
end
|
42
26
|
|
43
|
-
def
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
define_method :"#{autonym}=" do |value|
|
48
|
-
__set__ autonym, value
|
27
|
+
def _def_setter!(autonym, condition, &adjuster)
|
28
|
+
unless Validation::Condition::ANYTHING.equal? condition
|
29
|
+
_attributes_for(autonym).condition = condition
|
49
30
|
end
|
50
|
-
|
51
|
-
nil
|
52
31
|
|
53
|
-
|
54
|
-
|
55
|
-
def __set_condition__!(autonym, condition)
|
56
|
-
if ::Validation.conditionable? condition
|
57
|
-
_set_condition autonym, condition
|
58
|
-
else
|
59
|
-
raise TypeError, 'wrong object for condition'
|
32
|
+
if block_given?
|
33
|
+
_attributes_for(autonym).adjuster = adjuster
|
60
34
|
end
|
61
|
-
|
62
|
-
nil
|
63
|
-
end
|
64
35
|
|
65
|
-
|
66
|
-
|
67
|
-
_set_adjuster autonym, adjuster
|
68
|
-
else
|
69
|
-
raise ArgumentError, "wrong number of block argument #{arity} for 1"
|
36
|
+
define_method :"#{autonym}=" do |value|
|
37
|
+
_set autonym, value
|
70
38
|
end
|
71
39
|
|
72
40
|
nil
|
73
41
|
end
|
74
42
|
|
75
|
-
def
|
43
|
+
def _found_family!(_caller, autonym, our)
|
76
44
|
family = our.class
|
77
45
|
|
78
46
|
raise 'must not happen' unless inference?(autonym) and
|
79
47
|
autonym?(autonym) and
|
80
48
|
_caller.instance_of?(self)
|
81
49
|
|
82
|
-
|
83
|
-
|
84
|
-
_set_condition autonym, family
|
85
|
-
_remove_inference autonym
|
50
|
+
_attributes_for(autonym).condition = family
|
51
|
+
_attributes_for(autonym).inference = false
|
86
52
|
|
87
53
|
nil
|
88
54
|
end
|
89
55
|
|
90
56
|
# @endgroup
|
91
57
|
|
92
|
-
end; end
|
58
|
+
end; end
|