striuct 0.3.4 → 0.3.5
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![Build Status](https://secure.travis-ci.org/kachick/striuct.png)](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
|