striuct 0.3.3 → 0.3.4
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/.gitignore +35 -34
- data/.travis.yml +6 -6
- data/Gemfile +12 -12
- data/History.rdoc +279 -273
- data/LICENSE +21 -21
- data/Manifest.txt +91 -90
- data/README.ja.old.rdoc +297 -297
- data/README.md +128 -128
- data/Rakefile +11 -11
- data/benchmark/basics.rb +56 -56
- data/example/README.rb +44 -44
- data/example/example.old.rdoc +187 -187
- data/example/example1.rb +233 -233
- data/example/example2.rb +22 -22
- data/example/see_trace.rb +32 -32
- data/lib/striuct/classmethods/README.md +5 -5
- data/lib/striuct/classmethods/adjustment.rb +32 -32
- data/lib/striuct/classmethods/constructor.rb +63 -63
- data/lib/striuct/classmethods/default.rb +27 -27
- data/lib/striuct/classmethods/enum.rb +48 -48
- data/lib/striuct/classmethods/inner.rb +91 -91
- data/lib/striuct/classmethods/length.rb +14 -14
- data/lib/striuct/classmethods/macro.rb +144 -144
- data/lib/striuct/classmethods/named.rb +113 -113
- data/lib/striuct/classmethods/object.rb +54 -54
- data/lib/striuct/classmethods/prevent_conflicts.rb +89 -89
- data/lib/striuct/classmethods/requiremnets.rb +11 -11
- data/lib/striuct/classmethods/to_struct.rb +23 -25
- data/lib/striuct/classmethods/validation.rb +55 -55
- data/lib/striuct/classmethods.rb +1 -1
- data/lib/striuct/instancemethods/README.md +5 -5
- data/lib/striuct/instancemethods/assign.rb +30 -30
- data/lib/striuct/instancemethods/cast.rb +34 -34
- data/lib/striuct/instancemethods/compare.rb +30 -30
- data/lib/striuct/instancemethods/default.rb +13 -13
- data/lib/striuct/instancemethods/delegate_class_methods.rb +28 -28
- data/lib/striuct/instancemethods/enum.rb +103 -103
- data/lib/striuct/instancemethods/hashy.rb +121 -121
- data/lib/striuct/instancemethods/inner.rb +60 -60
- data/lib/striuct/instancemethods/keyvalidatable.rb +14 -14
- data/lib/striuct/instancemethods/lock.rb +61 -61
- data/lib/striuct/instancemethods/object.rb +52 -52
- data/lib/striuct/instancemethods/requirements.rb +14 -14
- data/lib/striuct/instancemethods/safety.rb +11 -11
- data/lib/striuct/instancemethods/subscript.rb +55 -55
- data/lib/striuct/instancemethods/validation.rb +29 -25
- data/lib/striuct/instancemethods/values.rb +57 -57
- data/lib/striuct/instancemethods.rb +1 -1
- data/lib/striuct/requirements.rb +5 -5
- data/lib/striuct/singleton_class.rb +66 -66
- data/lib/striuct/specificcontainer.rb +19 -19
- data/lib/striuct/structs.rb +7 -7
- data/lib/striuct/version.rb +5 -5
- data/lib/striuct.rb +13 -13
- data/striuct.gemspec +24 -24
- data/test/helper.rb +5 -5
- data/test/test_striuct-singleton_class-define.rb +19 -19
- data/test/test_striuct-subclass-class-cloning.rb +20 -20
- data/test/test_striuct-subclass-class-close.rb +36 -36
- data/test/test_striuct-subclass-class-constructor.rb +82 -82
- data/test/test_striuct-subclass-class-freeze.rb +36 -36
- data/test/test_striuct-subclass-class-inheritable.rb +57 -57
- data/test/test_striuct-subclass-class-macro.rb +13 -13
- data/test/test_striuct-subclass-class-safety_naming.rb +72 -72
- data/test/test_striuct-subclass-class-validation.rb +26 -26
- data/test/test_striuct-subclass-feature-alias_member.rb +53 -53
- data/test/test_striuct-subclass-feature-to_struct.rb +61 -25
- data/test/test_striuct-subclass-feature-validation_util.rb +57 -0
- data/test/test_striuct-subclass-instance-accessor.rb +137 -137
- data/test/test_striuct-subclass-instance-adjuster.rb +94 -94
- data/test/test_striuct-subclass-instance-assign.rb +30 -30
- data/test/test_striuct-subclass-instance-basic.rb +32 -32
- data/test/test_striuct-subclass-instance-cloning.rb +22 -22
- data/test/test_striuct-subclass-instance-compare.rb +51 -51
- data/test/test_striuct-subclass-instance-default_value.rb +128 -128
- data/test/test_striuct-subclass-instance-enum.rb +92 -92
- data/test/test_striuct-subclass-instance-freeze.rb +19 -19
- data/test/test_striuct-subclass-instance-hashlike.rb +153 -153
- data/test/test_striuct-subclass-instance-keyvalidatable.rb +24 -24
- data/test/test_striuct-subclass-instance-lock.rb +39 -39
- data/test/test_striuct-subclass-instance-to_s_family.rb +25 -25
- data/test/test_striuct-subclass-instance-validation_functional_condition.rb +50 -50
- data/test/test_striuct-subclass-instance-validation_inference.rb +50 -50
- data/test/test_striuct-subclass-instance-validation_specific_conditions.rb +247 -247
- data/test/test_striuct-subclass-instance-validation_with_getter.rb +33 -33
- data/test/test_striuct-subclass-instance_names.rb +18 -18
- data/test/test_striuct-version.rb +10 -10
- metadata +4 -2
@@ -1,64 +1,64 @@
|
|
1
|
-
require 'keyvalidatable'
|
2
|
-
|
3
|
-
class Striuct; module ClassMethods
|
4
|
-
|
5
|
-
# @group Constructor
|
6
|
-
|
7
|
-
# @return [Striuct]
|
8
|
-
def for_values(*values)
|
9
|
-
new_instance(*values)
|
10
|
-
end
|
11
|
-
|
12
|
-
alias_method :load_values, :for_values
|
13
|
-
alias_method :new, :for_values
|
14
|
-
|
15
|
-
# @param [Hash, Struct] pairs
|
16
|
-
# @return [Striuct]
|
17
|
-
def for_pairs(pairs)
|
18
|
-
raise TypeError, 'no pairs object' unless pairs.respond_to?(:each_pair)
|
19
|
-
|
20
|
-
pairs.dup.extend(KeyValidatable).validate_keys let: all_members
|
21
|
-
|
22
|
-
new.tap {|instance|
|
23
|
-
pairs.each_pair do |name, value|
|
24
|
-
instance[name] = value
|
25
|
-
end
|
26
|
-
}
|
27
|
-
end
|
28
|
-
|
29
|
-
alias_method :load_pairs, :for_pairs
|
30
|
-
alias_method :[], :for_pairs
|
31
|
-
|
32
|
-
# for build the fixed object
|
33
|
-
# @param [Hash] options
|
34
|
-
# @option options [Boolean] :lock
|
35
|
-
# @option options [Boolean] :strict
|
36
|
-
# @yieldparam [Striuct] instance
|
37
|
-
# @yieldreturn [Striuct] instance
|
38
|
-
# @return [void]
|
39
|
-
def define(options={lock: true, strict: true})
|
40
|
-
raise ArgumentError, 'must with block' unless block_given?
|
41
|
-
options.dup.extend(KeyValidatable).validate_keys let: [:lock, :strict]
|
42
|
-
|
43
|
-
lock, strict = options[:lock], options[:strict]
|
44
|
-
|
45
|
-
new.tap {|instance|
|
46
|
-
yield instance
|
47
|
-
|
48
|
-
unless (yets = autonyms.select{|autonym|! instance.assign?(autonym)}).empty?
|
49
|
-
raise "not assigned members are, yet '#{yets.inspect} in #{self}'"
|
50
|
-
end
|
51
|
-
|
52
|
-
if strict &&
|
53
|
-
! (invalids = autonyms.select{|autonym|! instance.valid?(autonym)}).empty?
|
54
|
-
|
55
|
-
raise Validation::InvalidWritingError, "invalids members are, yet '#{invalids.inspect} in #{self}'"
|
56
|
-
end
|
57
|
-
|
58
|
-
instance.lock if lock
|
59
|
-
}
|
60
|
-
end
|
61
|
-
|
62
|
-
# @endgroup
|
63
|
-
|
1
|
+
require 'keyvalidatable'
|
2
|
+
|
3
|
+
class Striuct; module ClassMethods
|
4
|
+
|
5
|
+
# @group Constructor
|
6
|
+
|
7
|
+
# @return [Striuct]
|
8
|
+
def for_values(*values)
|
9
|
+
new_instance(*values)
|
10
|
+
end
|
11
|
+
|
12
|
+
alias_method :load_values, :for_values
|
13
|
+
alias_method :new, :for_values
|
14
|
+
|
15
|
+
# @param [Hash, Struct] pairs
|
16
|
+
# @return [Striuct]
|
17
|
+
def for_pairs(pairs)
|
18
|
+
raise TypeError, 'no pairs object' unless pairs.respond_to?(:each_pair)
|
19
|
+
|
20
|
+
pairs.dup.extend(KeyValidatable).validate_keys let: all_members
|
21
|
+
|
22
|
+
new.tap {|instance|
|
23
|
+
pairs.each_pair do |name, value|
|
24
|
+
instance[name] = value
|
25
|
+
end
|
26
|
+
}
|
27
|
+
end
|
28
|
+
|
29
|
+
alias_method :load_pairs, :for_pairs
|
30
|
+
alias_method :[], :for_pairs
|
31
|
+
|
32
|
+
# for build the fixed object
|
33
|
+
# @param [Hash] options
|
34
|
+
# @option options [Boolean] :lock
|
35
|
+
# @option options [Boolean] :strict
|
36
|
+
# @yieldparam [Striuct] instance
|
37
|
+
# @yieldreturn [Striuct] instance
|
38
|
+
# @return [void]
|
39
|
+
def define(options={lock: true, strict: true})
|
40
|
+
raise ArgumentError, 'must with block' unless block_given?
|
41
|
+
options.dup.extend(KeyValidatable).validate_keys let: [:lock, :strict]
|
42
|
+
|
43
|
+
lock, strict = options[:lock], options[:strict]
|
44
|
+
|
45
|
+
new.tap {|instance|
|
46
|
+
yield instance
|
47
|
+
|
48
|
+
unless (yets = autonyms.select{|autonym|! instance.assign?(autonym)}).empty?
|
49
|
+
raise "not assigned members are, yet '#{yets.inspect} in #{self}'"
|
50
|
+
end
|
51
|
+
|
52
|
+
if strict &&
|
53
|
+
! (invalids = autonyms.select{|autonym|! instance.valid?(autonym)}).empty?
|
54
|
+
|
55
|
+
raise Validation::InvalidWritingError, "invalids members are, yet '#{invalids.inspect} in #{self}'"
|
56
|
+
end
|
57
|
+
|
58
|
+
instance.lock if lock
|
59
|
+
}
|
60
|
+
end
|
61
|
+
|
62
|
+
# @endgroup
|
63
|
+
|
64
64
|
end; end
|
@@ -1,28 +1,28 @@
|
|
1
|
-
class Striuct; module ClassMethods
|
2
|
-
|
3
|
-
# @group With default value
|
4
|
-
|
5
|
-
# @param [Symbol, String] name
|
6
|
-
def has_default?(name)
|
7
|
-
autonym = autonym_for name
|
8
|
-
|
9
|
-
@defaults.has_key? autonym
|
10
|
-
end
|
11
|
-
|
12
|
-
# @param [Symbol, String] name
|
13
|
-
def default_for(name)
|
14
|
-
autonym = autonym_for name
|
15
|
-
raise "#{name} has no default value" unless has_default? autonym
|
16
|
-
|
17
|
-
_default_for autonym
|
18
|
-
end
|
19
|
-
|
20
|
-
private
|
21
|
-
|
22
|
-
def _default_for(autonym)
|
23
|
-
@defaults[autonym]
|
24
|
-
end
|
25
|
-
|
26
|
-
# @endgroup
|
27
|
-
|
1
|
+
class Striuct; module ClassMethods
|
2
|
+
|
3
|
+
# @group With default value
|
4
|
+
|
5
|
+
# @param [Symbol, String] name
|
6
|
+
def has_default?(name)
|
7
|
+
autonym = autonym_for name
|
8
|
+
|
9
|
+
@defaults.has_key? autonym
|
10
|
+
end
|
11
|
+
|
12
|
+
# @param [Symbol, String] name
|
13
|
+
def default_for(name)
|
14
|
+
autonym = autonym_for name
|
15
|
+
raise "#{name} has no default value" unless has_default? autonym
|
16
|
+
|
17
|
+
_default_for autonym
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def _default_for(autonym)
|
23
|
+
@defaults[autonym]
|
24
|
+
end
|
25
|
+
|
26
|
+
# @endgroup
|
27
|
+
|
28
28
|
end; end
|
@@ -1,49 +1,49 @@
|
|
1
|
-
class Striuct; module ClassMethods
|
2
|
-
|
3
|
-
# @group Enumerative
|
4
|
-
|
5
|
-
# @yield [autonym]
|
6
|
-
# @yieldparam [Symbol] autonym - sequential under defined
|
7
|
-
# @yieldreturn [self]
|
8
|
-
# @return [Enumerator]
|
9
|
-
def each_autonym
|
10
|
-
return to_enum(__callee__) unless block_given?
|
11
|
-
|
12
|
-
@autonyms.each{|autonym|yield autonym}
|
13
|
-
self
|
14
|
-
end
|
15
|
-
|
16
|
-
alias_method :each_name, :each_autonym
|
17
|
-
alias_method :each_member, :each_autonym
|
18
|
-
alias_method :each_key, :each_autonym
|
19
|
-
|
20
|
-
# @yield [index]
|
21
|
-
# @yieldparam [Integer] Index
|
22
|
-
# @yieldreturn [self]
|
23
|
-
# @return [Enumerator]
|
24
|
-
def each_index
|
25
|
-
return to_enum(__callee__) 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 [self]
|
35
|
-
# @return [Enumerator]
|
36
|
-
def each_autonym_with_index
|
37
|
-
return to_enum(__callee__) unless block_given?
|
38
|
-
|
39
|
-
@autonyms.each_with_index{|autonym, index|yield autonym, index}
|
40
|
-
self
|
41
|
-
end
|
42
|
-
|
43
|
-
alias_method :each_name_with_index, :each_autonym_with_index
|
44
|
-
alias_method :each_member_with_index, :each_autonym_with_index
|
45
|
-
alias_method :each_key_with_index, :each_autonym_with_index
|
46
|
-
|
47
|
-
# @endgroup
|
48
|
-
|
1
|
+
class Striuct; module ClassMethods
|
2
|
+
|
3
|
+
# @group Enumerative
|
4
|
+
|
5
|
+
# @yield [autonym]
|
6
|
+
# @yieldparam [Symbol] autonym - sequential under defined
|
7
|
+
# @yieldreturn [self]
|
8
|
+
# @return [Enumerator]
|
9
|
+
def each_autonym
|
10
|
+
return to_enum(__callee__) unless block_given?
|
11
|
+
|
12
|
+
@autonyms.each{|autonym|yield autonym}
|
13
|
+
self
|
14
|
+
end
|
15
|
+
|
16
|
+
alias_method :each_name, :each_autonym
|
17
|
+
alias_method :each_member, :each_autonym
|
18
|
+
alias_method :each_key, :each_autonym
|
19
|
+
|
20
|
+
# @yield [index]
|
21
|
+
# @yieldparam [Integer] Index
|
22
|
+
# @yieldreturn [self]
|
23
|
+
# @return [Enumerator]
|
24
|
+
def each_index
|
25
|
+
return to_enum(__callee__) 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 [self]
|
35
|
+
# @return [Enumerator]
|
36
|
+
def each_autonym_with_index
|
37
|
+
return to_enum(__callee__) unless block_given?
|
38
|
+
|
39
|
+
@autonyms.each_with_index{|autonym, index|yield autonym, index}
|
40
|
+
self
|
41
|
+
end
|
42
|
+
|
43
|
+
alias_method :each_name_with_index, :each_autonym_with_index
|
44
|
+
alias_method :each_member_with_index, :each_autonym_with_index
|
45
|
+
alias_method :each_key_with_index, :each_autonym_with_index
|
46
|
+
|
47
|
+
# @endgroup
|
48
|
+
|
49
49
|
end; end
|
@@ -1,92 +1,92 @@
|
|
1
|
-
class Striuct; module ClassMethods
|
2
|
-
|
3
|
-
# @group Inner Methods
|
4
|
-
|
5
|
-
private
|
6
|
-
|
7
|
-
def __getter__!(name)
|
8
|
-
define_method name do
|
9
|
-
__get__ name
|
10
|
-
end
|
11
|
-
|
12
|
-
nil
|
13
|
-
end
|
14
|
-
|
15
|
-
def _remove_inference(autonym)
|
16
|
-
@inferences.delete autonym
|
17
|
-
end
|
18
|
-
|
19
|
-
def _mark_setter_validation(autonym)
|
20
|
-
@setter_validations[autonym] = true
|
21
|
-
end
|
22
|
-
|
23
|
-
def _mark_getter_validation(autonym)
|
24
|
-
@getter_validations[autonym] = true
|
25
|
-
end
|
26
|
-
|
27
|
-
def _mark_inference(autonym)
|
28
|
-
@inferences[autonym] = true
|
29
|
-
end
|
30
|
-
|
31
|
-
def _set_adjuster(autonym, adjuster)
|
32
|
-
@adjusters[autonym] = adjuster
|
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
|
41
|
-
end
|
42
|
-
|
43
|
-
def __setter__!(autonym, condition, &adjuster)
|
44
|
-
__set_condition__! autonym, condition unless Validation::Condition::ANYTHING.equal? condition
|
45
|
-
__set_adjuster__! autonym, &adjuster if block_given?
|
46
|
-
|
47
|
-
define_method :"#{autonym}=" do |value|
|
48
|
-
__set__ autonym, value
|
49
|
-
end
|
50
|
-
|
51
|
-
nil
|
52
|
-
|
53
|
-
end
|
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'
|
60
|
-
end
|
61
|
-
|
62
|
-
nil
|
63
|
-
end
|
64
|
-
|
65
|
-
def __set_adjuster__!(autonym, &adjuster)
|
66
|
-
if ::Validation.adjustable? adjuster
|
67
|
-
_set_adjuster autonym, adjuster
|
68
|
-
else
|
69
|
-
raise ArgumentError, "wrong number of block argument #{arity} for 1"
|
70
|
-
end
|
71
|
-
|
72
|
-
nil
|
73
|
-
end
|
74
|
-
|
75
|
-
def __found_family__!(_caller, autonym, our)
|
76
|
-
family = our.class
|
77
|
-
|
78
|
-
raise 'must not happen' unless inference?(autonym) and
|
79
|
-
autonym?(autonym) and
|
80
|
-
_caller.instance_of?(self)
|
81
|
-
|
82
|
-
raise ArgumentError unless Validation.conditionable? family
|
83
|
-
|
84
|
-
_set_condition autonym, family
|
85
|
-
_remove_inference autonym
|
86
|
-
|
87
|
-
nil
|
88
|
-
end
|
89
|
-
|
90
|
-
# @endgroup
|
91
|
-
|
1
|
+
class Striuct; module ClassMethods
|
2
|
+
|
3
|
+
# @group Inner Methods
|
4
|
+
|
5
|
+
private
|
6
|
+
|
7
|
+
def __getter__!(name)
|
8
|
+
define_method name do
|
9
|
+
__get__ name
|
10
|
+
end
|
11
|
+
|
12
|
+
nil
|
13
|
+
end
|
14
|
+
|
15
|
+
def _remove_inference(autonym)
|
16
|
+
@inferences.delete autonym
|
17
|
+
end
|
18
|
+
|
19
|
+
def _mark_setter_validation(autonym)
|
20
|
+
@setter_validations[autonym] = true
|
21
|
+
end
|
22
|
+
|
23
|
+
def _mark_getter_validation(autonym)
|
24
|
+
@getter_validations[autonym] = true
|
25
|
+
end
|
26
|
+
|
27
|
+
def _mark_inference(autonym)
|
28
|
+
@inferences[autonym] = true
|
29
|
+
end
|
30
|
+
|
31
|
+
def _set_adjuster(autonym, adjuster)
|
32
|
+
@adjusters[autonym] = adjuster
|
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
|
41
|
+
end
|
42
|
+
|
43
|
+
def __setter__!(autonym, condition, &adjuster)
|
44
|
+
__set_condition__! autonym, condition unless Validation::Condition::ANYTHING.equal? condition
|
45
|
+
__set_adjuster__! autonym, &adjuster if block_given?
|
46
|
+
|
47
|
+
define_method :"#{autonym}=" do |value|
|
48
|
+
__set__ autonym, value
|
49
|
+
end
|
50
|
+
|
51
|
+
nil
|
52
|
+
|
53
|
+
end
|
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'
|
60
|
+
end
|
61
|
+
|
62
|
+
nil
|
63
|
+
end
|
64
|
+
|
65
|
+
def __set_adjuster__!(autonym, &adjuster)
|
66
|
+
if ::Validation.adjustable? adjuster
|
67
|
+
_set_adjuster autonym, adjuster
|
68
|
+
else
|
69
|
+
raise ArgumentError, "wrong number of block argument #{arity} for 1"
|
70
|
+
end
|
71
|
+
|
72
|
+
nil
|
73
|
+
end
|
74
|
+
|
75
|
+
def __found_family__!(_caller, autonym, our)
|
76
|
+
family = our.class
|
77
|
+
|
78
|
+
raise 'must not happen' unless inference?(autonym) and
|
79
|
+
autonym?(autonym) and
|
80
|
+
_caller.instance_of?(self)
|
81
|
+
|
82
|
+
raise ArgumentError unless Validation.conditionable? family
|
83
|
+
|
84
|
+
_set_condition autonym, family
|
85
|
+
_remove_inference autonym
|
86
|
+
|
87
|
+
nil
|
88
|
+
end
|
89
|
+
|
90
|
+
# @endgroup
|
91
|
+
|
92
92
|
end; end
|
@@ -1,14 +1,14 @@
|
|
1
|
-
class Striuct; module ClassMethods
|
2
|
-
|
3
|
-
# @group Length/Size
|
4
|
-
|
5
|
-
# @return [Integer]
|
6
|
-
def length
|
7
|
-
@autonyms.length
|
8
|
-
end
|
9
|
-
|
10
|
-
alias_method :size, :length
|
11
|
-
|
12
|
-
# @endgroup
|
13
|
-
|
14
|
-
end; end
|
1
|
+
class Striuct; module ClassMethods
|
2
|
+
|
3
|
+
# @group Length/Size
|
4
|
+
|
5
|
+
# @return [Integer]
|
6
|
+
def length
|
7
|
+
@autonyms.length
|
8
|
+
end
|
9
|
+
|
10
|
+
alias_method :size, :length
|
11
|
+
|
12
|
+
# @endgroup
|
13
|
+
|
14
|
+
end; end
|