striuct 0.6.1 → 0.9.0

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 (89) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE.txt +21 -0
  3. data/README.md +44 -60
  4. data/lib/striuct/{requirements.rb → bootstrap.rb} +6 -2
  5. data/lib/striuct/classmethods/README.md +2 -2
  6. data/lib/striuct/classmethods/adjustment.rb +77 -13
  7. data/lib/striuct/classmethods/attributes.rb +94 -92
  8. data/lib/striuct/classmethods/conflict_management.rb +109 -106
  9. data/lib/striuct/classmethods/constructor.rb +55 -65
  10. data/lib/striuct/classmethods/copy.rb +45 -43
  11. data/lib/striuct/classmethods/default.rb +23 -21
  12. data/lib/striuct/classmethods/enum.rb +46 -44
  13. data/lib/striuct/classmethods/fix.rb +23 -21
  14. data/lib/striuct/classmethods/hashdeepdupulicatable.rb +15 -15
  15. data/lib/striuct/classmethods/inner.rb +57 -55
  16. data/lib/striuct/classmethods/length.rb +12 -10
  17. data/lib/striuct/classmethods/macro.rb +99 -106
  18. data/lib/striuct/classmethods/names.rb +69 -65
  19. data/lib/striuct/classmethods/predicate.rb +131 -129
  20. data/lib/striuct/classmethods/requirements.rb +2 -2
  21. data/lib/striuct/classmethods/to_struct.rb +21 -18
  22. data/lib/striuct/classmethods/validation.rb +15 -13
  23. data/lib/striuct/instancemethods/README.md +2 -2
  24. data/lib/striuct/instancemethods/assign.rb +29 -27
  25. data/lib/striuct/instancemethods/cast.rb +28 -26
  26. data/lib/striuct/instancemethods/compare.rb +26 -24
  27. data/lib/striuct/instancemethods/default.rb +31 -29
  28. data/lib/striuct/instancemethods/delegate_class_methods.rb +35 -33
  29. data/lib/striuct/instancemethods/enum.rb +86 -84
  30. data/lib/striuct/instancemethods/getter.rb +39 -37
  31. data/lib/striuct/instancemethods/hashy.rb +99 -97
  32. data/lib/striuct/instancemethods/lock.rb +46 -44
  33. data/lib/striuct/instancemethods/object.rb +50 -48
  34. data/lib/striuct/instancemethods/requirements.rb +9 -13
  35. data/lib/striuct/instancemethods/safety.rb +11 -9
  36. data/lib/striuct/instancemethods/setter.rb +46 -45
  37. data/lib/striuct/instancemethods/to_s.rb +39 -37
  38. data/lib/striuct/instancemethods/validation.rb +46 -29
  39. data/lib/striuct/instancemethods/values.rb +50 -48
  40. data/lib/striuct/singleton_class.rb +25 -18
  41. data/lib/striuct/structs.rb +3 -3
  42. data/lib/striuct.rb +7 -3
  43. metadata +18 -209
  44. data/.gitignore +0 -35
  45. data/.travis.yml +0 -17
  46. data/.yardopts +0 -1
  47. data/Gemfile +0 -11
  48. data/MIT-LICENSE +0 -22
  49. data/Rakefile +0 -11
  50. data/benchmark/basics.rb +0 -56
  51. data/example/README.rb +0 -50
  52. data/example/example1.rb +0 -195
  53. data/example/example2.rb +0 -20
  54. data/example/see_trace.rb +0 -32
  55. data/lib/striuct/instancemethods/keyvalidatable.rb +0 -9
  56. data/striuct.gemspec +0 -45
  57. data/test/helper.rb +0 -3
  58. data/test/test_sglc-constructor.rb +0 -36
  59. data/test/test_subc-c-add_members.rb +0 -13
  60. data/test/test_subc-c-close_member.rb +0 -36
  61. data/test/test_subc-c-constructor.rb +0 -92
  62. data/test/test_subc-c-copy.rb +0 -71
  63. data/test/test_subc-c-freeze.rb +0 -36
  64. data/test/test_subc-c-inheritable.rb +0 -58
  65. data/test/test_subc-c-safety_naming.rb +0 -73
  66. data/test/test_subc-f-alias_member.rb +0 -54
  67. data/test/test_subc-f-enum.rb +0 -159
  68. data/test/test_subc-f-predicate.rb +0 -647
  69. data/test/test_subc-f-to_struct.rb +0 -61
  70. data/test/test_subc-f-validation_util.rb +0 -59
  71. data/test/test_subc-f_debug.rb +0 -39
  72. data/test/test_subc-f_name.rb +0 -525
  73. data/test/test_subc-i-accessor.rb +0 -138
  74. data/test/test_subc-i-adjuster.rb +0 -95
  75. data/test/test_subc-i-assign.rb +0 -53
  76. data/test/test_subc-i-basic.rb +0 -43
  77. data/test/test_subc-i-cast.rb +0 -27
  78. data/test/test_subc-i-compare.rb +0 -52
  79. data/test/test_subc-i-copy.rb +0 -23
  80. data/test/test_subc-i-default_value.rb +0 -129
  81. data/test/test_subc-i-freeze.rb +0 -19
  82. data/test/test_subc-i-hashlike.rb +0 -144
  83. data/test/test_subc-i-keyvalidatable.rb +0 -25
  84. data/test/test_subc-i-lock.rb +0 -40
  85. data/test/test_subc-i-must.rb +0 -30
  86. data/test/test_subc-i-to_s_family.rb +0 -26
  87. data/test/test_subc-i-validation_specific_conditions.rb +0 -297
  88. data/test/test_subc-i-validation_with_getter.rb +0 -33
  89. data/test/test_version.rb +0 -13
@@ -1,112 +1,115 @@
1
- class Striuct; module ClassMethods
2
-
3
- # @group Member Conflict Management
4
-
5
- # @return [Hash] Symbol => Fixnum
6
- NAMING_RISKS = {
7
- conflict: 10,
8
- no_identifier: 9,
9
- bad_manners: 5,
10
- no_ascii: 3,
11
- strict: 0
12
- }.freeze
13
-
14
- # @return [Hash] Symbol => Hash
15
- CONFLICT_MANAGEMENT_LEVELS = {
16
- struct: {error: 99, warn: 99},
17
- warning: {error: 99, warn: 5},
18
- error: {error: 9, warn: 5},
19
- prevent: {error: 5, warn: 1},
20
- nervous: {error: 1, warn: 1}
21
- }.each(&:freeze).freeze
22
-
23
- # @return [Symbol]
24
- DEFAULT_CONFLICT_MANAGEMENT_LEVEL = :prevent
25
-
26
- # @param [Object] name
27
- # accpeptable the name into own member, under protect level of runtime
28
- def cname?(name)
29
- _check_safety_naming(name.to_sym){|r|r}
30
- rescue Exception
31
- false
32
- end
33
-
34
- attr_reader :conflict_management_level
35
-
36
- private
37
-
38
- # @param [Symbol, String, #to_sym] level
39
- # @return [Symbol] level
40
- # change level of management conflict member names
41
- def set_conflict_management_level(level)
42
- level = level.to_sym
43
- raise NameError unless CONFLICT_MANAGEMENT_LEVELS.has_key? level
44
-
45
- @conflict_management_level = level
46
- end
1
+ # frozen_string_literal: true
47
2
 
48
- # @param [Symbol, String, #to_sym] level
49
- # @see [#set_conflict_management_level]
50
- # @yieldreturn [self]
51
- # @return [void]
52
- # @raise [ArgumentError] if no block given
53
- # temp scope of a conflict_management_level
54
- def conflict_management(level=DEFAULT_CONFLICT_MANAGEMENT_LEVEL)
55
- before = @conflict_management_level
56
- set_conflict_management_level level
57
-
58
- yield
59
- ensure
60
- @conflict_management_level = before
61
- self
62
- end
63
-
64
- # @param [Symbol] name
65
- # @return [void]
66
- # @yieldreturn [Boolean]
67
- def _check_safety_naming(name)
68
- estimation = _estimate_naming name
69
- risk = NAMING_RISKS.fetch estimation
70
- plevels = CONFLICT_MANAGEMENT_LEVELS.fetch @conflict_management_level
71
- caution = "undesirable naming '#{name}', because #{estimation}"
72
-
73
- r = (
74
- case
75
- when risk >= plevels.fetch(:error)
76
- raise NameError, caution unless block_given?
77
- false
78
- when risk >= plevels.fetch(:warn)
79
- warn caution unless block_given?
80
- false
81
- else
82
- true
83
- end
84
- )
3
+ class Striuct
4
+ module ClassMethods
5
+ # @group Member Conflict Management
85
6
 
86
- yield r if block_given?
87
- end
88
-
89
- # @param [Symbol] name
90
- # @return [Symbol]
91
- def _estimate_naming(name)
92
- if (instance_methods + private_instance_methods).include? name
93
- return :conflict
7
+ # @return [Hash] Symbol => Fixnum
8
+ NAMING_RISKS = {
9
+ conflict: 10,
10
+ no_identifier: 9,
11
+ bad_manners: 5,
12
+ no_ascii: 3,
13
+ strict: 0
14
+ }.freeze
15
+
16
+ # @return [Hash] Symbol => Hash
17
+ CONFLICT_MANAGEMENT_LEVELS = {
18
+ struct: { error: 99, warn: 99 },
19
+ warning: { error: 99, warn: 5 },
20
+ error: { error: 9, warn: 5 },
21
+ prevent: { error: 5, warn: 1 },
22
+ nervous: { error: 1, warn: 1 }
23
+ }.each(&:freeze).freeze
24
+
25
+ # @return [Symbol]
26
+ DEFAULT_CONFLICT_MANAGEMENT_LEVEL = :prevent
27
+
28
+ # @param [Object] name
29
+ # acceptable the name into own member, under protect level of runtime
30
+ def cname?(name)
31
+ _check_safety_naming(name.to_sym) { |r| r }
32
+ rescue Exception
33
+ false
94
34
  end
95
35
 
96
- return :no_ascii unless name.encoding.equal? Encoding::ASCII
97
-
98
- case name
99
- when /[\W]/, /\A[^a-zA-Z_]/, :''
100
- :no_identifier
101
- when /\Aeach/, /\A__[^_]*__\z/, /\A_[^_]*\z/, /[!?]\z/, /\Ato_/
102
- :bad_manners
103
- when /\A[a-zA-Z_]\w*\z/
104
- :strict
105
- else
106
- raise 'must not happen'
36
+ attr_reader :conflict_management_level
37
+
38
+ private
39
+
40
+ # @param [Symbol, String, #to_sym] level
41
+ # @return [Symbol] level
42
+ # change level of management conflict member names
43
+ def set_conflict_management_level(level)
44
+ level = level.to_sym
45
+ raise NameError unless CONFLICT_MANAGEMENT_LEVELS.key?(level)
46
+
47
+ @conflict_management_level = level
107
48
  end
108
- end
109
-
110
- # @endgroup
111
49
 
112
- end; end
50
+ # @param [Symbol, String, #to_sym] level
51
+ # @see [#set_conflict_management_level]
52
+ # @yieldreturn [self]
53
+ # @return [void]
54
+ # @raise [ArgumentError] if no block given
55
+ # temp scope of a conflict_management_level
56
+ def conflict_management(level=DEFAULT_CONFLICT_MANAGEMENT_LEVEL)
57
+ before = @conflict_management_level
58
+ set_conflict_management_level(level)
59
+
60
+ yield
61
+ ensure
62
+ @conflict_management_level = before
63
+ self
64
+ end
65
+
66
+ # @param [Symbol] name
67
+ # @return [void]
68
+ # @yieldreturn [Boolean]
69
+ def _check_safety_naming(name)
70
+ estimation = _estimate_naming(name)
71
+ risk = NAMING_RISKS.fetch(estimation)
72
+ plevels = CONFLICT_MANAGEMENT_LEVELS.fetch(@conflict_management_level)
73
+ caution = "undesirable naming '#{name}', because #{estimation}"
74
+
75
+ r = (
76
+ case
77
+ when risk >= plevels.fetch(:error)
78
+ raise NameError, caution unless block_given?
79
+
80
+ false
81
+ when risk >= plevels.fetch(:warn)
82
+ warn(caution) unless block_given?
83
+ false
84
+ else
85
+ true
86
+ end
87
+ )
88
+
89
+ yield r if block_given?
90
+ end
91
+
92
+ # @param [Symbol] name
93
+ # @return [Symbol]
94
+ def _estimate_naming(name)
95
+ if (instance_methods + private_instance_methods).include?(name)
96
+ return :conflict
97
+ end
98
+
99
+ return :no_ascii unless name.encoding.equal?(Encoding::ASCII)
100
+
101
+ case name
102
+ when /\W/, /\A[^a-zA-Z_]/, :''
103
+ :no_identifier
104
+ when /\Aeach/, /\A__[^_]*__\z/, /\A_[^_]*\z/, /[!?]\z/, /\Ato_/
105
+ :bad_manners
106
+ when /\A[a-zA-Z_]\w*\z/
107
+ :strict
108
+ else
109
+ raise 'must not happen'
110
+ end
111
+ end
112
+
113
+ # @endgroup
114
+ end
115
+ end
@@ -1,66 +1,56 @@
1
- require 'keyvalidatable'
2
- require 'optionalargument'
3
-
4
- class Striuct; module ClassMethods
5
-
6
- # @group Constructor
7
-
8
- # @return [Striuct]
9
- def for_values(*values)
10
- new_instance(*values)
1
+ # frozen_string_literal: true
2
+
3
+ class Striuct
4
+ module ClassMethods
5
+ # @group Constructor
6
+
7
+ # @return [Striuct]
8
+ def for_values(*values)
9
+ new_instance(*values)
10
+ end
11
+
12
+ alias_method :new, :for_values
13
+
14
+ # @param [Hash, Struct, Striuct, #each_pair] pairs
15
+ # @return [Striuct]
16
+ def for_pairs(pairs)
17
+ raise ArgumentError, 'no pairs object' unless pairs.respond_to?(:each_pair)
18
+ raise ArgumentError unless pairs.each_pair { |key, _value| all_members.include?(key.to_sym) }
19
+
20
+ instance = allocate
21
+ instance.__send__(:initialize_for_pairs, pairs)
22
+ instance
23
+ end
24
+
25
+ alias_method :[], :for_pairs
26
+
27
+ # for build the fixed object
28
+ # @param [Boolean] lock
29
+ # @param [Boolean] strict
30
+ # @yieldparam [Striuct] instance
31
+ # @yieldreturn [Striuct] instance
32
+ # @return [void]
33
+ def define(lock: true, strict: true)
34
+ raise ArgumentError, 'must with block' unless block_given?
35
+
36
+ new.tap { |instance|
37
+ yield instance
38
+
39
+ yets = autonyms.select { |autonym| !instance.assigned?(autonym) }
40
+ unless yets.empty?
41
+ raise "not assigned members are, yet '#{yets.inspect} in #{self}'"
42
+ end
43
+
44
+ invalids = autonyms.select { |autonym| !instance.valid?(autonym) }
45
+ if strict && !invalids.empty?
46
+ raise InvalidWritingError,
47
+ "invalids members are, yet '#{invalids.inspect} in #{self}'"
48
+ end
49
+
50
+ instance.lock_all if lock
51
+ }
52
+ end
53
+
54
+ # @endgroup
11
55
  end
12
-
13
- alias_method :new, :for_values
14
-
15
- # @param [Hash, Struct, Striuct, #each_pair] pairs
16
- # @return [Striuct]
17
- def for_pairs(pairs)
18
- raise TypeError, 'no pairs object' unless pairs.respond_to?(:each_pair)
19
- KeyValidatable.validate_array KeyValidatable.keys_for(pairs).map(&:to_sym),
20
- let: all_members
21
-
22
- instance = allocate
23
- instance.__send__ :initialize_for_pairs, pairs
24
- instance
25
- end
26
-
27
- alias_method :[], :for_pairs
28
-
29
- # @return [Class]
30
- DEFINE_OptArg = OptionalArgument.define {
31
- opt :lock, default: true, condition: BOOLEAN?
32
- opt :strict, default: true, condition: BOOLEAN?
33
- }
34
-
35
- # for build the fixed object
36
- # @param [Hash] options
37
- # @option options [Boolean] :lock
38
- # @option options [Boolean] :strict
39
- # @yieldparam [Striuct] instance
40
- # @yieldreturn [Striuct] instance
41
- # @return [void]
42
- def define(options={})
43
- raise ArgumentError, 'must with block' unless block_given?
44
- opts = DEFINE_OptArg.parse options
45
-
46
- new.tap {|instance|
47
- yield instance
48
-
49
- yets = autonyms.select{|autonym|! instance.assigned?(autonym)}
50
- unless yets.empty?
51
- raise "not assigned members are, yet '#{yets.inspect} in #{self}'"
52
- end
53
-
54
- invalids = autonyms.select{|autonym|! instance.valid?(autonym)}
55
- if opts.strict && !invalids.empty?
56
- raise Validation::InvalidWritingError,
57
- "invalids members are, yet '#{invalids.inspect} in #{self}'"
58
- end
59
-
60
- instance.lock_all if opts.lock
61
- }
62
- end
63
-
64
- # @endgroup
65
-
66
- end; end
56
+ end
@@ -1,52 +1,54 @@
1
- class Striuct; module ClassMethods
1
+ # frozen_string_literal: true
2
2
 
3
- # @group Basic Methods for Ruby's Object
3
+ class Striuct
4
+ module ClassMethods
5
+ # @group Basic Methods for Ruby's Object
4
6
 
5
- # @return [Class]
6
- def clone
7
- ret = super
8
- ret.__send__ :close_member if closed?
9
- ret
10
- end
7
+ # @return [Class]
8
+ def clone
9
+ ret = super
10
+ ret.__send__(:close_member) if closed?
11
+ ret
12
+ end
11
13
 
12
- # @return [Class]
13
- def dup
14
- copy_variables! super
15
- end
14
+ # @return [Class]
15
+ def dup
16
+ copy_variables!(super)
17
+ end
16
18
 
17
- private
18
-
19
- def inherited(subclass)
20
- ret = super subclass
21
- copy_variables! subclass
22
- ret
23
- end
24
-
25
- def initialize_copy(original)
26
- ret = super original
27
- @autonyms = @autonyms.dup
28
- @aliases = @aliases.dup
29
- @attributes = @attributes.deep_dup
30
- ret
31
- end
19
+ private
32
20
 
33
- # @return [familar_class]
34
- def copy_variables!(familar_class)
35
- autonyms = @autonyms.dup
36
- aliases = @aliases.dup
37
- attributes = @attributes.deep_dup
38
- conflict_management = @conflict_management_level
39
-
40
- familar_class.class_eval do
41
- @autonyms = autonyms
42
- @aliases = aliases
43
- @attributes = attributes
44
- @conflict_management_level = conflict_management
21
+ def inherited(subclass)
22
+ ret = super(subclass)
23
+ copy_variables!(subclass)
24
+ ret
45
25
  end
46
26
 
47
- familar_class
48
- end
27
+ def initialize_copy(original)
28
+ ret = super(original)
29
+ @autonyms = @autonyms.dup
30
+ @aliases = @aliases.dup
31
+ @attributes = @attributes.deep_dup
32
+ ret
33
+ end
49
34
 
50
- # @endgroup
35
+ # @return [familiar_class]
36
+ def copy_variables!(familiar_class)
37
+ autonyms = @autonyms.dup
38
+ aliases = @aliases.dup
39
+ attributes = @attributes.deep_dup
40
+ conflict_management = @conflict_management_level
41
+
42
+ familiar_class.class_eval do
43
+ @autonyms = autonyms
44
+ @aliases = aliases
45
+ @attributes = attributes
46
+ @conflict_management_level = conflict_management
47
+ end
48
+
49
+ familiar_class
50
+ end
51
51
 
52
- end; end
52
+ # @endgroup
53
+ end
54
+ end
@@ -1,24 +1,26 @@
1
- class Striuct; module ClassMethods
1
+ # frozen_string_literal: true
2
2
 
3
- # @group With default value
4
-
5
- # @param [Symbol, String, #to_sym, Integer, #to_int] key - name / index
6
- def default_value_for(key)
7
- autonym = autonym_for_key key
8
- raise KeyError unless with_default? autonym
9
-
10
- _attributes_for(autonym).default_value
11
- end
3
+ class Striuct
4
+ module ClassMethods
5
+ # @group With default value
12
6
 
13
- # @param [Symbol, String, #to_sym, Integer, #to_int] key - name / index
14
- # @return [Symbol] :value / :proc
15
- def default_type_for(key)
16
- autonym = autonym_for_key key
17
- raise KeyError unless with_default? autonym
18
-
19
- _attributes_for(autonym).default_type
20
- end
21
-
22
- # @endgroup
7
+ # @param [Symbol, String, #to_sym, Integer, #to_int] key - name / index
8
+ def default_value_for(key)
9
+ autonym = autonym_for_key(key)
10
+ raise KeyError unless with_default?(autonym)
11
+
12
+ _attributes_for(autonym).default_value
13
+ end
23
14
 
24
- end; end
15
+ # @param [Symbol, String, #to_sym, Integer, #to_int] key - name / index
16
+ # @return [Symbol] :value / :proc
17
+ def default_type_for(key)
18
+ autonym = autonym_for_key(key)
19
+ raise KeyError unless with_default?(autonym)
20
+
21
+ _attributes_for(autonym).default_type
22
+ end
23
+
24
+ # @endgroup
25
+ end
26
+ end
@@ -1,45 +1,47 @@
1
- class Striuct; module ClassMethods
2
-
3
- # @group Enumerative
4
-
5
- # @yield [autonym]
6
- # @yieldparam [Symbol] autonym - sequential under defined
7
- # @yieldreturn [Class] self
8
- # @return [Enumerator]
9
- def each_autonym
10
- return to_enum(__callee__) { size } unless block_given?
11
-
12
- @autonyms.each{|autonym|yield autonym}
13
- self
1
+ # frozen_string_literal: true
2
+
3
+ class Striuct
4
+ module ClassMethods
5
+ # @group Enumerative
6
+
7
+ # @yield [autonym]
8
+ # @yieldparam [Symbol] autonym - sequential under defined
9
+ # @yieldreturn [Class] self
10
+ # @return [Enumerator]
11
+ def each_autonym
12
+ return to_enum(__callee__) { size } unless block_given?
13
+
14
+ @autonyms.each { |autonym| yield autonym }
15
+ self
16
+ end
17
+
18
+ alias_method :each_member, :each_autonym
19
+
20
+ # @yield [index]
21
+ # @yieldparam [Integer] Index
22
+ # @yieldreturn [Class] self
23
+ # @return [Enumerator]
24
+ def each_index
25
+ return to_enum(__callee__) { size } 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 [Class] self
35
+ # @return [Enumerator]
36
+ def each_autonym_with_index
37
+ return to_enum(__callee__) { size } unless block_given?
38
+
39
+ @autonyms.each_with_index { |autonym, index| yield autonym, index }
40
+ self
41
+ end
42
+
43
+ alias_method :each_member_with_index, :each_autonym_with_index
44
+
45
+ # @endgroup
14
46
  end
15
-
16
- alias_method :each_member, :each_autonym
17
-
18
- # @yield [index]
19
- # @yieldparam [Integer] Index
20
- # @yieldreturn [Class] self
21
- # @return [Enumerator]
22
- def each_index
23
- return to_enum(__callee__) { size } unless block_given?
24
-
25
- @autonyms.each_index{|index|yield index}
26
- self
27
- end
28
-
29
- # @yield [autonym, index]
30
- # @yieldparam [Symbol] autonym
31
- # @yieldparam [Integer] index
32
- # @yieldreturn [Class] self
33
- # @return [Enumerator]
34
- def each_autonym_with_index
35
- return to_enum(__callee__) { size } unless block_given?
36
-
37
- @autonyms.each_with_index{|autonym, index|yield autonym, index}
38
- self
39
- end
40
-
41
- alias_method :each_member_with_index, :each_autonym_with_index
42
-
43
- # @endgroup
44
-
45
- end; end
47
+ end
@@ -1,28 +1,30 @@
1
- class Striuct; module ClassMethods
1
+ # frozen_string_literal: true
2
2
 
3
- # @group Fix inner data structures
3
+ class Striuct
4
+ module ClassMethods
5
+ # @group Fix inner data structures
4
6
 
5
- # @return [self]
6
- def freeze
7
- [@autonyms, @attributes, @aliases].each(&:freeze)
8
- super
9
- end
7
+ # @return [self]
8
+ def freeze
9
+ [@autonyms, @attributes, @aliases].each(&:freeze)
10
+ super
11
+ end
10
12
 
11
- def closed?
12
- [@autonyms, @attributes, @aliases].any?(&:frozen?)
13
- end
13
+ def closed?
14
+ [@autonyms, @attributes, @aliases].any?(&:frozen?)
15
+ end
14
16
 
15
- private
17
+ private
16
18
 
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
19
+ # @return [self]
20
+ def close_member
21
+ [@autonyms, @attributes, @aliases].each(&:freeze)
22
+ self
23
+ end
25
24
 
26
- # @endgroup
25
+ alias_method :fix_structural, :close_member
26
+ alias_method :close, :close_member
27
27
 
28
- end; end
28
+ # @endgroup
29
+ end
30
+ end
@@ -1,19 +1,19 @@
1
- class Striuct; module ClassMethods
1
+ # frozen_string_literal: true
2
2
 
3
- module HashDeepDupulicatable
4
-
5
- # @return [Hash]
6
- def deep_dup
7
- dup.tap {|h|
8
- each_pair do |key, value|
9
- h[key] = value.dup
10
- end
11
- h.extend HashDeepDupulicatable
12
- }
3
+ class Striuct
4
+ module ClassMethods
5
+ module HashDeepDupulicatable
6
+ # @return [Hash]
7
+ def deep_dup
8
+ dup.tap { |h|
9
+ each_pair do |key, value|
10
+ h[key] = value.dup
11
+ end
12
+ h.extend HashDeepDupulicatable
13
+ }
14
+ end
13
15
  end
14
16
 
17
+ private_constant :HashDeepDupulicatable
15
18
  end
16
-
17
- private_constant :HashDeepDupulicatable
18
-
19
- end; end
19
+ end