striuct 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. data/.gitignore +2 -0
  2. data/.yardopts +1 -0
  3. data/History.rdoc +6 -0
  4. data/Manifest.txt +38 -17
  5. data/README.md +6 -4
  6. data/{benchmarks → benchmark}/basics.rb +0 -0
  7. data/{examples → example}/README.rb +0 -0
  8. data/{examples → example}/example.old.rdoc +0 -0
  9. data/{examples → example}/example1.rb +0 -0
  10. data/{examples → example}/example2.rb +0 -0
  11. data/{examples → example}/see_trace.rb +0 -0
  12. data/lib/striuct/classmethods/adjustment.rb +31 -0
  13. data/lib/striuct/classmethods/constructor.rb +8 -8
  14. data/lib/striuct/classmethods/default.rb +28 -0
  15. data/lib/striuct/classmethods/enum.rb +49 -0
  16. data/lib/striuct/classmethods/inner.rb +25 -108
  17. data/lib/striuct/classmethods/length.rb +14 -0
  18. data/lib/striuct/classmethods/macro.rb +38 -41
  19. data/lib/striuct/classmethods/named.rb +94 -0
  20. data/lib/striuct/classmethods/object.rb +24 -0
  21. data/lib/striuct/classmethods/prevent_conflicts.rb +89 -0
  22. data/lib/striuct/classmethods/requiremnets.rb +9 -4
  23. data/lib/striuct/classmethods/to_struct.rb +26 -0
  24. data/lib/striuct/classmethods/validation.rb +56 -0
  25. data/lib/striuct/instancemethods/assign.rb +31 -0
  26. data/lib/striuct/instancemethods/compare.rb +31 -0
  27. data/lib/striuct/instancemethods/default.rb +14 -0
  28. data/lib/striuct/instancemethods/delegate_class_methods.rb +20 -0
  29. data/lib/striuct/instancemethods/enum.rb +104 -0
  30. data/lib/striuct/instancemethods/{hashlike.rb → hashy.rb} +39 -45
  31. data/lib/striuct/instancemethods/inner.rb +16 -77
  32. data/lib/striuct/instancemethods/lock.rb +51 -0
  33. data/lib/striuct/instancemethods/object.rb +47 -0
  34. data/lib/striuct/instancemethods/requirements.rb +12 -3
  35. data/lib/striuct/instancemethods/safety.rb +2 -66
  36. data/lib/striuct/instancemethods/singleton_class.rb +4 -1
  37. data/lib/striuct/instancemethods/subscript.rb +55 -0
  38. data/lib/striuct/instancemethods/to_struct.rb +12 -0
  39. data/lib/striuct/instancemethods/validation.rb +25 -0
  40. data/lib/striuct/instancemethods/values.rb +64 -0
  41. data/lib/striuct/singleton_class.rb +10 -10
  42. data/lib/striuct/specificcontainer.rb +3 -1
  43. data/lib/striuct/version.rb +1 -1
  44. data/striuct.gemspec +1 -1
  45. data/test/test_striuct_subclass_alias_member.rb +3 -3
  46. data/test/test_striuct_subclass_for_pairs.rb +8 -1
  47. metadata +32 -17
  48. data/lib/striuct/classmethods/basic.rb +0 -54
  49. data/lib/striuct/classmethods/constants.rb +0 -23
  50. data/lib/striuct/classmethods/handy.rb +0 -124
  51. data/lib/striuct/classmethods/safety.rb +0 -52
  52. data/lib/striuct/instancemethods/basic.rb +0 -135
  53. data/lib/striuct/instancemethods/handy.rb +0 -91
data/.gitignore CHANGED
@@ -30,3 +30,5 @@ doc/
30
30
 
31
31
  # other
32
32
  *.lock
33
+ *.bak
34
+ tool/
data/.yardopts ADDED
@@ -0,0 +1 @@
1
+ --readme README.md --protected --private lib/**/*.rb --exclude inner|instancemethods/singleton_class - LICENSE
data/History.rdoc CHANGED
@@ -1,3 +1,9 @@
1
+ === 0.3.2 2012-9-4
2
+
3
+ * fix:
4
+ * #assign
5
+ * .for_pairs, .[]
6
+
1
7
  === 0.3.1 2012-9-2
2
8
 
3
9
  * add:
data/Manifest.txt CHANGED
@@ -6,27 +6,46 @@ Manifest.txt
6
6
  Rakefile
7
7
  Gemfile
8
8
  striuct.gemspec
9
+ .yardopts
10
+
9
11
  lib/striuct.rb
10
12
  lib/striuct/version.rb
11
13
  lib/striuct/specificcontainer.rb
14
+ lib/striuct/singleton_class.rb
15
+
12
16
  lib/striuct/classmethods.rb
13
17
  lib/striuct/classmethods/requirements.rb
14
- lib/striuct/classmethods/constants.rb
15
- lib/striuct/classmethods/basic.rb
18
+ lib/striuct/classmethods/inner.rb
19
+ lib/striuct/classmethods/named.rb
20
+ lib/striuct/classmethods/object.rb
21
+ lib/striuct/classmethods/length.rb
22
+ lib/striuct/classmethods/to_struct.rb
16
23
  lib/striuct/classmethods/constructor.rb
17
- lib/striuct/classmethods/safety.rb
18
- lib/striuct/classmethods/handy.rb
24
+ lib/striuct/classmethods/enum.rb
25
+ lib/striuct/classmethods/default.rb
26
+ lib/striuct/classmethods/adjustment.rb
19
27
  lib/striuct/classmethods/macro.rb
20
- lib/striuct/classmethods/inner.rb
28
+ lib/striuct/classmethods/prevent_conflicts.rb
29
+ lib/striuct/classmethods/validation.rb
30
+
21
31
  lib/striuct/instancemethods.rb
22
32
  lib/striuct/instancemethods/requirements.rb
23
33
  lib/striuct/instancemethods/singleton_class.rb
24
- lib/striuct/instancemethods/basic.rb
25
- lib/striuct/instancemethods/safety.rb
26
- lib/striuct/instancemethods/handy.rb
27
- lib/striuct/instancemethods/hashlike.rb
34
+ lib/striuct/instancemethods/delegate_class_methods.rb
28
35
  lib/striuct/instancemethods/inner.rb
29
- lib/striuct/singleton_class.rb
36
+ lib/striuct/instancemethods/object.rb
37
+ lib/striuct/instancemethods/compare.rb
38
+ lib/striuct/instancemethods/values.rb
39
+ lib/striuct/instancemethods/to_struct.rb
40
+ lib/striuct/instancemethods/default.rb
41
+ lib/striuct/instancemethods/enum.rb
42
+ lib/striuct/instancemethods/hashy.rb
43
+ lib/striuct/instancemethods/subscript.rb
44
+ lib/striuct/instancemethods/assign.rb
45
+ lib/striuct/instancemethods/lock.rb
46
+ lib/striuct/instancemethods/validation.rb
47
+ lib/striuct/instancemethods/safety.rb
48
+
30
49
  test/helper.rb
31
50
  test/test_striuct.rb
32
51
  test/test_striuct_define.rb
@@ -36,7 +55,7 @@ test/test_striuct_subclass_assign.rb
36
55
  test/test_striuct_subclass_classlock.rb
37
56
  test/test_striuct_subclass_classmethods.rb
38
57
  test/test_striuct_subclass_cloning.rb
39
- test_striuct_subclass_default_value.rb
58
+ test/test_striuct_subclass_default_value.rb
40
59
  test/test_striuct_subclass_for_pairs.rb
41
60
  test/test_striuct_subclass_freeze.rb
42
61
  test/test_striuct_subclass_functional_condition.rb
@@ -50,10 +69,12 @@ test/test_striuct_subclass_safetynaming.rb
50
69
  test/test_striuct_subclass_specific_conditions.rb
51
70
  test/test_striuct_subclass_to_struct.rb
52
71
  test/test_striuct_version.rb
53
- examples/README.rb
54
- examples/example1.rb
55
- examples/example2.rb
56
- examples/example.old.rdoc
57
- examples/see_trace.rb
58
- benchmarks/basics.rb
72
+
73
+ example/README.rb
74
+ example/example1.rb
75
+ example/example2.rb
76
+ example/example.old.rdoc
77
+ example/see_trace.rb
78
+
79
+ benchmark/basics.rb
59
80
 
data/README.md CHANGED
@@ -1,8 +1,6 @@
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
-
6
4
  Description
7
5
  -----------
8
6
 
@@ -13,9 +11,9 @@ Features
13
11
 
14
12
  ### Strict
15
13
 
16
- * Base API looks like Struct
17
14
  * Easy and Flexible Validations
18
15
  * Prevent to conflict member names
16
+ * Lock setters for each member
19
17
 
20
18
  ### Useful
21
19
 
@@ -23,9 +21,12 @@ Features
23
21
  * Default value
24
22
  * Member aliasing
25
23
  * Inheritable
24
+ * Hndling between nil <-> unassigned
25
+ * More flendly API for Hash
26
26
 
27
27
  ### Onepoint
28
28
 
29
+ * Base API looks like Struct
29
30
  * Pure Ruby :)
30
31
 
31
32
  Usage
@@ -63,7 +64,7 @@ ken.id #=> 2
63
64
 
64
65
  #### Basics
65
66
 
66
- examples/*
67
+ example/*
67
68
 
68
69
  Requirements
69
70
  -------------
@@ -83,6 +84,7 @@ Link
83
84
  ----
84
85
 
85
86
  * [code](https://github.com/kachick/striuct)
87
+ * [API](http://kachick.github.com/docs/striuct/api/frames.html)
86
88
  * [issues](https://github.com/kachick/striuct/issues)
87
89
  * [CI](http://travis-ci.org/#!/kachick/striuct)
88
90
  * [gem](https://rubygems.org/gems/striuct)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,31 @@
1
+ class Striuct; module ClassMethods
2
+
3
+ # @group Adjuster
4
+
5
+ # @param [Symbol, String] name
6
+ def has_adjuster?(name)
7
+ autonym = autonym_for name
8
+
9
+ ! adjuster_for(autonym).nil?
10
+ end
11
+
12
+ alias_method :has_flavor?, :has_adjuster?
13
+
14
+ # @param [Symbol, String] name
15
+ def adjuster_for(name)
16
+ _adjuster_for autonym_for(name)
17
+ end
18
+
19
+ alias_method :flavor_for, :adjuster_for
20
+
21
+ private
22
+
23
+ def _adjuster_for(name)
24
+ @adjusters[name]
25
+ end
26
+
27
+ alias_method :_flavor_for, :_adjuster_for
28
+
29
+ # @endgroup
30
+
31
+ end; end
@@ -1,9 +1,10 @@
1
1
  require 'keyvalidatable'
2
2
 
3
3
  class Striuct; module ClassMethods
4
+
4
5
  # @group Constructor
5
6
 
6
- # @return [Subclass]
7
+ # @return [Striuct]
7
8
  def for_values(*values)
8
9
  new_instance(*values)
9
10
  end
@@ -11,12 +12,10 @@ class Striuct; module ClassMethods
11
12
  alias_method :load_values, :for_values
12
13
  alias_method :new, :for_values
13
14
 
14
- # @param [Hash, Struct]
15
+ # @param [Hash, Struct] pairs
15
16
  # @return [Striuct]
16
17
  def for_pairs(pairs)
17
- unless pairs.respond_to?(:each_pair) and pairs.respond_to?(:keys)
18
- raise TypeError, 'no pairs object'
19
- end
18
+ raise TypeError, 'no pairs object' unless pairs.respond_to?(:each_pair)
20
19
 
21
20
  pairs.dup.extend(KeyValidatable).validate_keys let: all_members
22
21
 
@@ -39,19 +38,19 @@ class Striuct; module ClassMethods
39
38
  # @return [void]
40
39
  def define(options={lock: true, strict: true})
41
40
  raise ArgumentError, 'must with block' unless block_given?
42
- options.extend(KeyValidatable).validate_keys let: [:lock, :strict]
41
+ options.dup.extend(KeyValidatable).validate_keys let: [:lock, :strict]
43
42
 
44
43
  lock, strict = options[:lock], options[:strict]
45
44
 
46
45
  new.tap {|instance|
47
46
  yield instance
48
47
 
49
- unless (yets = each_name.select{|name|! instance.assign?(name)}).empty?
48
+ unless (yets = autonyms.select{|autonym|! instance.assign?(autonym)}).empty?
50
49
  raise "not assigned members are, yet '#{yets.inspect} in #{self}'"
51
50
  end
52
51
 
53
52
  if strict &&
54
- ! (invalids = each_name.select{|name|! instance.valid?(name)}).empty?
53
+ ! (invalids = autonyms.select{|autonym|! instance.valid?(autonym)}).empty?
55
54
 
56
55
  raise Validation::InvalidWritingError, "invalids members are, yet '#{invalids.inspect} in #{self}'"
57
56
  end
@@ -61,4 +60,5 @@ class Striuct; module ClassMethods
61
60
  end
62
61
 
63
62
  # @endgroup
63
+
64
64
  end; end
@@ -0,0 +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(name)
23
+ @defaults[name]
24
+ end
25
+
26
+ # @endgroup
27
+
28
+ end; end
@@ -0,0 +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
+
49
+ end; end
@@ -1,19 +1,32 @@
1
1
  class Striuct; module ClassMethods
2
- # @group Use Only Inner
2
+
3
+ # @group Inner Methods
3
4
 
4
5
  private
5
6
 
6
- def _names
7
- @names
7
+ def __getter__!(name)
8
+ define_method name do
9
+ __get__ name
10
+ end
11
+
12
+ nil
13
+ end
14
+
15
+ def _autonyms
16
+ @autonyms
8
17
  end
9
18
 
19
+ alias_method :_names, :_autonyms
20
+
10
21
  def _alias_member(aliased, original)
11
22
  @aliases[aliased] = original
12
23
  end
13
24
 
14
- def _original_for(aliased)
25
+ def _autonym_for(aliased)
15
26
  @aliases[aliased]
16
27
  end
28
+
29
+ alias_method :_original_for, :_autonym_for
17
30
 
18
31
  def _aliases_for(original)
19
32
  @aliases.group_by{|aliased, org|org}[original]
@@ -35,8 +48,8 @@ class Striuct; module ClassMethods
35
48
  @inferences[name] = true
36
49
  end
37
50
 
38
- def _set_flavor(name, flavor)
39
- @flavors[name] = flavor
51
+ def _set_adjuster(name, adjuster)
52
+ @adjusters[name] = adjuster
40
53
  end
41
54
 
42
55
  def _set_condition(name, condition)
@@ -47,84 +60,9 @@ class Striuct; module ClassMethods
47
60
  @defaults[name] = value
48
61
  end
49
62
 
50
- # @param [Symbol, String, #to_sym, #to_str] name
51
- def autonym_for(name)
52
- name = keyable_for name
53
-
54
- if _names.include? name
55
- name
56
- else
57
- if original = _original_for(name)
58
- original
59
- else
60
- raise NameError, "not defined member for #{name}"
61
- end
62
- end
63
- end
64
-
65
- # @param [Symbol, String, #to_sym] name
66
- # @return [Symbol]
67
- def keyable_for(name)
68
- name.to_sym
69
- end
70
-
71
- # @param [Symbol] name
72
- # @return [void]
73
- # @yieldreturn [Boolean]
74
- def _check_safety_naming(name)
75
- estimation = _estimate_naming name
76
- risk = NAMING_RISKS[estimation]
77
- plevels = PROTECT_LEVELS[@protect_level]
78
- caution = "undesirable naming '#{name}', because #{estimation}"
79
-
80
- r = (
81
- case
82
- when risk >= plevels[:error]
83
- raise NameError, caution unless block_given?
84
- false
85
- when risk >= plevels[:warn]
86
- warn caution unless block_given?
87
- false
88
- else
89
- true
90
- end
91
- )
92
-
93
- yield r if block_given?
94
- end
95
-
96
- # @param [Symbol] name
97
- # @return [Symbol]
98
- def _estimate_naming(name)
99
- if (instance_methods + private_instance_methods).include? name
100
- return :conflict
101
- end
102
-
103
- return :no_ascii unless name.encoding.equal? Encoding::ASCII
104
-
105
- case name
106
- when /[\W]/, /\A[^a-zA-Z_]/, :''
107
- :no_identifier
108
- when /\Aeach/, /\A__[^_]*__\z/, /\A_[^_]*\z/, /[!?]\z/, /\Ato_/
109
- :bad_manners
110
- when /\A[a-zA-Z_]\w*\z/
111
- :strict
112
- else
113
- raise 'must not happen'
114
- end
115
- end
116
-
117
- def __getter__!(name)
118
- define_method name do
119
- __get__ name
120
- end
121
-
122
- nil
123
- end
124
-
125
- def __setter__!(name, condition, &flavor)
63
+ def __setter__!(name, condition, &adjuster)
126
64
  __set_condition__! name, condition unless Validation::Condition::ANYTHING.equal? condition
127
- __set_flavor__! name, &flavor if block_given?
65
+ __set_adjuster__! name, &adjuster if block_given?
128
66
 
129
67
  define_method :"#{name}=" do |value|
130
68
  __set__ name, value
@@ -144,9 +82,9 @@ class Striuct; module ClassMethods
144
82
  nil
145
83
  end
146
84
 
147
- def __set_flavor__!(name, &flavor)
148
- if ::Validation.adjustable? flavor
149
- _set_flavor name, flavor
85
+ def __set_adjuster__!(name, &adjuster)
86
+ if ::Validation.adjustable? adjuster
87
+ _set_adjuster name, adjuster
150
88
  else
151
89
  raise ArgumentError, "wrong number of block argument #{arity} for 1"
152
90
  end
@@ -170,27 +108,6 @@ class Striuct; module ClassMethods
170
108
  nil
171
109
  end
172
110
 
173
- def _condition_for(name)
174
- @conditions[name]
175
- end
176
-
177
- # @param [Symbol, String] name
178
- def condition_for(name)
179
- _condition_for autonym_for(name)
180
- end
181
-
182
- def _flavor_for(name)
183
- @flavors[name]
184
- end
185
-
186
- # @param [Symbol, String] name
187
- def flavor_for(name)
188
- _flavor_for autonym_for(name)
189
- end
190
-
191
- def _default_for(name)
192
- @defaults[name]
193
- end
194
-
195
111
  # @endgroup
112
+
196
113
  end; end
@@ -0,0 +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,19 +1,8 @@
1
1
  require 'keyvalidatable'
2
2
 
3
3
  class Striuct; module ClassMethods
4
- # @group Macro for Definition
5
4
 
6
- private
7
-
8
- # @param [Symbol] level
9
- # @return [nil]
10
- # change protect level for risk of naming members
11
- def protect_level(level)
12
- raise NameError unless PROTECT_LEVELS.has_key? level
13
-
14
- @protect_level = level
15
- nil
16
- end
5
+ # @group Macro for Member Definition
17
6
 
18
7
  VALID_MEMBER_OPTIONS = [
19
8
  :default,
@@ -28,8 +17,14 @@ class Striuct; module ClassMethods
28
17
  DEFAULT_MEMBER_OPTIONS = {
29
18
  setter_validation: true
30
19
  }.freeze
20
+
21
+ def closed?
22
+ [@autonyms, @adjusters, @defaults, @aliases].any?(&:frozen?)
23
+ end
31
24
 
32
- # @param [Symbol, String] name
25
+ private
26
+
27
+ # @param [Symbol, String] autonym
33
28
  # @param [#===, Proc, Method, ANYTHING] condition
34
29
  # @param [Hash] options
35
30
  # @option options [BasicObject] :default
@@ -40,7 +35,7 @@ class Striuct; module ClassMethods
40
35
  # @option options [Boolean] :writer_validation
41
36
  # @option options [Boolean] :setter_validation
42
37
  # @return [nil]
43
- def add_member(name, condition=Validation::Condition::ANYTHING, options=DEFAULT_MEMBER_OPTIONS, &flavor)
38
+ def add_member(autonym, condition=Validation::Condition::ANYTHING, options=DEFAULT_MEMBER_OPTIONS, &adjuster)
44
39
  raise "already closed to add member in #{self}" if closed?
45
40
  options = DEFAULT_MEMBER_OPTIONS.merge(options).extend(KeyValidatable)
46
41
  options.validate_keys let: VALID_MEMBER_OPTIONS
@@ -48,23 +43,24 @@ class Striuct; module ClassMethods
48
43
  raise ArgumentError, 'It is not able to choose "default" with "default_proc" in options'
49
44
  end
50
45
 
51
- name = keyable_for name
52
- raise ArgumentError, %Q!already exist name "#{name}"! if member? name
53
- _check_safety_naming name
54
- _mark_setter_validation name if options[:setter_validation] or options[:writer_validation]
55
- _mark_getter_validation name if options[:getter_validation] or options[:reader_validation]
56
- _mark_inference name if options[:inference]
46
+ autonym = keyable_for autonym # First difinition for an autonym
57
47
 
58
- @names << name
59
- __getter__! name
60
- __setter__! name, condition, &flavor
48
+ raise ArgumentError, %Q!already exist name "#{autonym}"! if member? autonym
49
+ _check_safety_naming autonym
50
+ _mark_setter_validation autonym if options[:setter_validation] or options[:writer_validation]
51
+ _mark_getter_validation autonym if options[:getter_validation] or options[:reader_validation]
52
+ _mark_inference autonym if options[:inference]
53
+
54
+ @autonyms << autonym
55
+ __getter__! autonym
56
+ __setter__! autonym, condition, &adjuster
61
57
 
62
58
  if options.has_key?(:default)
63
- set_default_value name, options.fetch(:default)
59
+ set_default_value autonym, options.fetch(:default)
64
60
  end
65
61
 
66
62
  if options.has_key?(:default_proc)
67
- set_default_value name, &options.fetch(:default_proc)
63
+ set_default_value autonym, &options.fetch(:default_proc)
68
64
  end
69
65
 
70
66
  nil
@@ -72,30 +68,29 @@ class Striuct; module ClassMethods
72
68
 
73
69
  alias_method :member, :add_member
74
70
 
75
- # @param [Symbol, String] name
76
- # @param [Symbol, String] *names
71
+ # @param [Symbol, String] autonym
72
+ # @param [Symbol, String] autonyms
77
73
  # @return [nil]
78
- def add_members(name, *names)
74
+ def add_members(autonym, *autonyms)
79
75
  raise "already closed to add members in #{self}" if closed?
80
76
 
81
- [name, *names].each {|_name|add_member _name}
77
+ [autonym, *autonyms].each {|_autonym|add_member _autonym}
82
78
  nil
83
79
  end
84
80
 
85
81
  # @param [Symbol, String] aliased
86
- # @param [Symbol, String] original
82
+ # @param [Symbol, String] autonym
87
83
  # @return [nil]
88
- def alias_member(aliased, original)
84
+ def alias_member(aliased, autonym)
89
85
  raise "already closed to add members in #{self}" if closed?
90
- original = keyable_for original
86
+ autonym = autonym_for autonym
91
87
  aliased = keyable_for aliased
92
- raise NameError unless member? original
93
88
  raise ArgumentError, %Q!already exist name "#{aliased}"! if member? aliased
94
89
  _check_safety_naming aliased
95
90
 
96
- alias_method aliased, original
97
- alias_method "#{aliased}=", "#{original}="
98
- _alias_member aliased, original
91
+ alias_method aliased, autonym
92
+ alias_method :"#{aliased}=", :"#{autonym}="
93
+ _alias_member aliased, autonym
99
94
  nil
100
95
  end
101
96
 
@@ -103,8 +98,8 @@ class Striuct; module ClassMethods
103
98
  # @return [nil]
104
99
  def set_default_value(name, value=nil, &block)
105
100
  raise "already closed to modify member attributes in #{self}" if closed?
106
- name = autonym_for(name)
107
- raise "already settled default value for #{name}" if has_default? name
101
+ autonym = autonym_for(name)
102
+ raise "already settled default value for #{name}" if has_default? autonym
108
103
 
109
104
  value = (
110
105
  if block_given?
@@ -112,7 +107,7 @@ class Striuct; module ClassMethods
112
107
  arity = block.arity
113
108
 
114
109
  if valid_default_proc? block
115
- SpecificContainer.new block
110
+ DefaultProcHolder.new block
116
111
  else
117
112
  raise ArgumentError, "wrong number of block parameter #{arity} for 0..2"
118
113
  end
@@ -124,19 +119,20 @@ class Striuct; module ClassMethods
124
119
  end
125
120
  )
126
121
 
127
- _set_default_value name, value
122
+ _set_default_value autonym, value
128
123
  nil
129
124
  end
130
125
 
131
126
  alias_method :default, :set_default_value
132
127
 
128
+ # @param [Proc] _proc
133
129
  def valid_default_proc?(_proc)
134
130
  _proc.arity <= 2
135
131
  end
136
132
 
137
133
  # @return [self]
138
134
  def close_member
139
- [@names, @flavors, @defaults, @aliases].each(&:freeze)
135
+ [@autonyms, @adjusters, @defaults, @aliases].each(&:freeze)
140
136
  self
141
137
  end
142
138
 
@@ -144,4 +140,5 @@ class Striuct; module ClassMethods
144
140
  alias_method :close, :close_member
145
141
 
146
142
  # @endgroup
143
+
147
144
  end; end