striuct 0.3.1 → 0.3.2

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.
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