striuct 0.4.0 → 0.4.1
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/README.md +1 -1
- data/lib/striuct/classmethods/copy.rb +26 -29
- data/lib/striuct/{singleton_class → classmethods}/hashdeepdupulicatable.rb +1 -1
- data/lib/striuct/classmethods/inner.rb +7 -0
- data/lib/striuct/classmethods/requirements.rb +1 -0
- data/lib/striuct/requirements.rb +1 -0
- data/lib/striuct/singleton_class.rb +15 -18
- data/lib/striuct.rb +2 -7
- data/striuct.gemspec +1 -1
- metadata +16 -46
data/README.md
CHANGED
@@ -101,7 +101,7 @@ Requirements
|
|
101
101
|
|
102
102
|
* Ruby - [1.9.2 or later](http://travis-ci.org/#!/kachick/striuct)
|
103
103
|
* [validation](https://github.com/kachick/validation) - 0.0.3
|
104
|
-
* [optionalargument](https://github.com/kachick/optionalargument) - 0.0.
|
104
|
+
* [optionalargument](https://github.com/kachick/optionalargument) - 0.0.3
|
105
105
|
* [keyvalidatable](https://github.com/kachick/keyvalidatable) - 0.0.3
|
106
106
|
|
107
107
|
Install
|
@@ -2,52 +2,49 @@ class Striuct; module ClassMethods
|
|
2
2
|
|
3
3
|
# @group Basic Methods for Ruby's Object
|
4
4
|
|
5
|
-
# @return [
|
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]
|
5
|
+
# @return [Class]
|
21
6
|
def clone
|
22
7
|
ret = super
|
23
|
-
ret.__send__ :
|
8
|
+
ret.__send__ :close_member if closed?
|
24
9
|
ret
|
25
10
|
end
|
26
11
|
|
12
|
+
# @return [Class]
|
13
|
+
def dup
|
14
|
+
copy_variables! super
|
15
|
+
end
|
16
|
+
|
27
17
|
private
|
28
18
|
|
29
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
|
32
|
+
|
33
|
+
# @return [familar_class]
|
34
|
+
def copy_variables!(familar_class)
|
30
35
|
autonyms = @autonyms.dup
|
31
36
|
aliases = @aliases.dup
|
32
37
|
attributes = @attributes.deep_dup
|
33
38
|
conflict_management = @conflict_management_level
|
34
|
-
|
35
|
-
|
36
|
-
original_inherited subclass
|
37
|
-
|
39
|
+
|
40
|
+
familar_class.class_eval do
|
38
41
|
@autonyms = autonyms
|
39
42
|
@aliases = aliases
|
40
43
|
@attributes = attributes
|
41
44
|
@conflict_management_level = conflict_management
|
42
45
|
end
|
43
|
-
|
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
|
46
|
+
|
47
|
+
familar_class
|
51
48
|
end
|
52
49
|
|
53
50
|
# @endgroup
|
@@ -4,6 +4,13 @@ class Striuct; module ClassMethods
|
|
4
4
|
|
5
5
|
private
|
6
6
|
|
7
|
+
def _init
|
8
|
+
@autonyms = []
|
9
|
+
@attributes = {}.extend HashDeepDupulicatable # autonym => Attributes
|
10
|
+
@aliases = {} # aliased => autonym
|
11
|
+
@conflict_management_level = DEFAULT_CONFLICT_MANAGEMENT_LEVEL
|
12
|
+
end
|
13
|
+
|
7
14
|
def _add_autonym(autonym)
|
8
15
|
autonym = autonym.to_sym
|
9
16
|
raise NameError, 'already defined' if member? autonym
|
data/lib/striuct/requirements.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
|
1
|
+
require 'validation'
|
2
2
|
|
3
3
|
class Striuct
|
4
4
|
|
5
5
|
class << self
|
6
|
-
|
7
|
-
# @group Constructor
|
8
6
|
|
9
7
|
alias_method :new_instance, :new
|
10
8
|
private :new_instance
|
11
9
|
|
10
|
+
# @group Constructors for Subclassies
|
11
|
+
|
12
12
|
# @param [Symbol, String] autonyms
|
13
13
|
# @yieldreturn [Class]
|
14
14
|
# @return [Class]
|
@@ -19,25 +19,25 @@ class Striuct
|
|
19
19
|
warn "no define constant first-arg(#{first}), the Struct behavior is not supported in Striuct"
|
20
20
|
end
|
21
21
|
|
22
|
-
Class.new
|
22
|
+
Class.new(self) {
|
23
23
|
autonyms.each do |autonym|
|
24
24
|
add_member autonym
|
25
25
|
end
|
26
26
|
|
27
27
|
class_eval(&block) if block_given?
|
28
|
-
|
28
|
+
}
|
29
29
|
end
|
30
30
|
|
31
31
|
# @yieldreturn [Class] (see Striuct.new) - reject floating class
|
32
32
|
# @return [void]
|
33
33
|
def define(&block)
|
34
|
-
raise ArgumentError, '
|
34
|
+
raise ArgumentError, 'block not supplied' unless block_given?
|
35
35
|
|
36
36
|
new(&block).tap {|subclass|
|
37
|
-
subclass.class_eval
|
37
|
+
subclass.class_eval {
|
38
38
|
raise 'not yet finished' if @autonyms.empty?
|
39
39
|
close
|
40
|
-
|
40
|
+
}
|
41
41
|
}
|
42
42
|
end
|
43
43
|
|
@@ -45,22 +45,19 @@ class Striuct
|
|
45
45
|
|
46
46
|
private
|
47
47
|
|
48
|
-
alias_method :original_inherited, :inherited
|
49
|
-
|
50
48
|
def inherited(subclass)
|
51
|
-
subclass
|
52
|
-
original_inherited subclass
|
49
|
+
ret = super subclass
|
53
50
|
|
51
|
+
subclass.class_eval {
|
54
52
|
extend ClassMethods
|
55
53
|
include Enumerable
|
54
|
+
include Validation
|
56
55
|
include InstanceMethods
|
57
56
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
ClassMethods::DEFAULT_CONFLICT_MANAGEMENT_LEVEL
|
63
|
-
end
|
57
|
+
_init
|
58
|
+
}
|
59
|
+
|
60
|
+
ret
|
64
61
|
end
|
65
62
|
|
66
63
|
end
|
data/lib/striuct.rb
CHANGED
@@ -1,13 +1,8 @@
|
|
1
|
-
# striuct -
|
2
|
-
# Copyright (c) 2011 Kenichi Kamiya
|
3
|
-
|
4
|
-
require 'validation'
|
1
|
+
# striuct - Struct++
|
2
|
+
# Copyright (c) 2011-2012 Kenichi Kamiya
|
5
3
|
|
6
4
|
# @abstract
|
7
5
|
class Striuct
|
8
|
-
|
9
|
-
include Validation
|
10
|
-
|
11
6
|
end
|
12
7
|
|
13
8
|
require_relative 'striuct/requirements'
|
data/striuct.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: striuct
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-10-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: validation
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirement: &9580980 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,15 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.0.3
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: 0.0.3
|
24
|
+
version_requirements: *9580980
|
30
25
|
- !ruby/object:Gem::Dependency
|
31
26
|
name: optionalargument
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
27
|
+
requirement: &9579740 !ruby/object:Gem::Requirement
|
33
28
|
none: false
|
34
29
|
requirements:
|
35
30
|
- - ~>
|
@@ -37,15 +32,10 @@ dependencies:
|
|
37
32
|
version: 0.0.3
|
38
33
|
type: :runtime
|
39
34
|
prerelease: false
|
40
|
-
version_requirements:
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: 0.0.3
|
35
|
+
version_requirements: *9579740
|
46
36
|
- !ruby/object:Gem::Dependency
|
47
37
|
name: keyvalidatable
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
38
|
+
requirement: &9578620 !ruby/object:Gem::Requirement
|
49
39
|
none: false
|
50
40
|
requirements:
|
51
41
|
- - ~>
|
@@ -53,15 +43,10 @@ dependencies:
|
|
53
43
|
version: 0.0.3
|
54
44
|
type: :runtime
|
55
45
|
prerelease: false
|
56
|
-
version_requirements:
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ~>
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 0.0.3
|
46
|
+
version_requirements: *9578620
|
62
47
|
- !ruby/object:Gem::Dependency
|
63
48
|
name: yard
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
+
requirement: &9169460 !ruby/object:Gem::Requirement
|
65
50
|
none: false
|
66
51
|
requirements:
|
67
52
|
- - ~>
|
@@ -69,15 +54,10 @@ dependencies:
|
|
69
54
|
version: '0.8'
|
70
55
|
type: :development
|
71
56
|
prerelease: false
|
72
|
-
version_requirements:
|
73
|
-
none: false
|
74
|
-
requirements:
|
75
|
-
- - ~>
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '0.8'
|
57
|
+
version_requirements: *9169460
|
78
58
|
- !ruby/object:Gem::Dependency
|
79
59
|
name: rake
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirement: &9169020 !ruby/object:Gem::Requirement
|
81
61
|
none: false
|
82
62
|
requirements:
|
83
63
|
- - ! '>='
|
@@ -85,15 +65,10 @@ dependencies:
|
|
85
65
|
version: '0'
|
86
66
|
type: :development
|
87
67
|
prerelease: false
|
88
|
-
version_requirements:
|
89
|
-
none: false
|
90
|
-
requirements:
|
91
|
-
- - ! '>='
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: '0'
|
68
|
+
version_requirements: *9169020
|
94
69
|
- !ruby/object:Gem::Dependency
|
95
70
|
name: bundler
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
71
|
+
requirement: &9168420 !ruby/object:Gem::Requirement
|
97
72
|
none: false
|
98
73
|
requirements:
|
99
74
|
- - ! '>='
|
@@ -101,12 +76,7 @@ dependencies:
|
|
101
76
|
version: '0'
|
102
77
|
type: :development
|
103
78
|
prerelease: false
|
104
|
-
version_requirements:
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - ! '>='
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '0'
|
79
|
+
version_requirements: *9168420
|
110
80
|
description: ! "Validatable, Inheritable, Member Aliasing,\n Conflict Management,
|
111
81
|
Default Value, Divide nil with unassign,\n Lock setter of each member, Hash flendly
|
112
82
|
API, ... And more Struct++ features :)"
|
@@ -139,6 +109,7 @@ files:
|
|
139
109
|
- lib/striuct/classmethods/default.rb
|
140
110
|
- lib/striuct/classmethods/enum.rb
|
141
111
|
- lib/striuct/classmethods/fix.rb
|
112
|
+
- lib/striuct/classmethods/hashdeepdupulicatable.rb
|
142
113
|
- lib/striuct/classmethods/inner.rb
|
143
114
|
- lib/striuct/classmethods/length.rb
|
144
115
|
- lib/striuct/classmethods/macro.rb
|
@@ -167,7 +138,6 @@ files:
|
|
167
138
|
- lib/striuct/instancemethods/values.rb
|
168
139
|
- lib/striuct/requirements.rb
|
169
140
|
- lib/striuct/singleton_class.rb
|
170
|
-
- lib/striuct/singleton_class/hashdeepdupulicatable.rb
|
171
141
|
- lib/striuct/structs.rb
|
172
142
|
- striuct.gemspec
|
173
143
|
- test/helper.rb
|
@@ -222,7 +192,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
222
192
|
version: '0'
|
223
193
|
requirements: []
|
224
194
|
rubyforge_project:
|
225
|
-
rubygems_version: 1.8.
|
195
|
+
rubygems_version: 1.8.11
|
226
196
|
signing_key:
|
227
197
|
specification_version: 3
|
228
198
|
summary: Struct++
|