striuct 0.4.1 → 0.4.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.
- data/.travis.yml +0 -2
- data/.yardopts +1 -1
- data/README.md +2 -2
- data/lib/striuct/classmethods/constructor.rb +18 -12
- data/lib/striuct/classmethods/macro.rb +3 -2
- data/striuct.gemspec +2 -2
- data/test/test_subc-c-constructor.rb +4 -0
- data/test/test_version.rb +3 -4
- metadata +16 -16
- /data/{LICENSE → MIT-LICENSE} +0 -0
data/.travis.yml
CHANGED
data/.yardopts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
--readme README.md --private lib/**/*.rb --exclude attributes|hashdeepdupulicatable - LICENSE
|
1
|
+
--readme README.md --private lib/**/*.rb --exclude attributes|hashdeepdupulicatable - MIT-LICENSE
|
data/README.md
CHANGED
@@ -102,7 +102,7 @@ Requirements
|
|
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
104
|
* [optionalargument](https://github.com/kachick/optionalargument) - 0.0.3
|
105
|
-
* [keyvalidatable](https://github.com/kachick/keyvalidatable) - 0.0.
|
105
|
+
* [keyvalidatable](https://github.com/kachick/keyvalidatable) - 0.0.5
|
106
106
|
|
107
107
|
Install
|
108
108
|
-------
|
@@ -131,5 +131,5 @@ License
|
|
131
131
|
|
132
132
|
The MIT X11 License
|
133
133
|
Copyright (c) 2011 Kenichi Kamiya
|
134
|
-
See
|
134
|
+
See MIT-LICENSE for further details.
|
135
135
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'keyvalidatable'
|
2
|
+
require 'optionalargument'
|
2
3
|
|
3
4
|
class Striuct; module ClassMethods
|
4
5
|
|
@@ -15,8 +16,8 @@ class Striuct; module ClassMethods
|
|
15
16
|
# @return [Striuct]
|
16
17
|
def for_pairs(pairs)
|
17
18
|
raise TypeError, 'no pairs object' unless pairs.respond_to?(:each_pair)
|
18
|
-
|
19
|
-
|
19
|
+
KeyValidatable.validate_array KeyValidatable.keys_for(pairs).map(&:to_sym),
|
20
|
+
let: all_members
|
20
21
|
|
21
22
|
new.tap {|instance|
|
22
23
|
pairs.each_pair do |name, value|
|
@@ -27,6 +28,12 @@ class Striuct; module ClassMethods
|
|
27
28
|
|
28
29
|
alias_method :[], :for_pairs
|
29
30
|
|
31
|
+
# @return [Class]
|
32
|
+
DEFINE_OptArg = OptionalArgument.define {
|
33
|
+
opt :lock, default: true, condition: BOOLEAN?
|
34
|
+
opt :strict, default: true, condition: BOOLEAN?
|
35
|
+
}
|
36
|
+
|
30
37
|
# for build the fixed object
|
31
38
|
# @param [Hash] options
|
32
39
|
# @option options [Boolean] :lock
|
@@ -34,26 +41,25 @@ class Striuct; module ClassMethods
|
|
34
41
|
# @yieldparam [Striuct] instance
|
35
42
|
# @yieldreturn [Striuct] instance
|
36
43
|
# @return [void]
|
37
|
-
def define(options={
|
44
|
+
def define(options={})
|
38
45
|
raise ArgumentError, 'must with block' unless block_given?
|
39
|
-
|
40
|
-
|
41
|
-
lock, strict = options[:lock], options[:strict]
|
46
|
+
opts = DEFINE_OptArg.parse options
|
42
47
|
|
43
48
|
new.tap {|instance|
|
44
49
|
yield instance
|
45
50
|
|
46
|
-
|
51
|
+
yets = autonyms.select{|autonym|! instance.assign?(autonym)}
|
52
|
+
unless yets.empty?
|
47
53
|
raise "not assigned members are, yet '#{yets.inspect} in #{self}'"
|
48
54
|
end
|
49
55
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
56
|
+
invalids = autonyms.select{|autonym|! instance.valid?(autonym)}
|
57
|
+
if opts.strict && !invalids.empty?
|
58
|
+
raise Validation::InvalidWritingError,
|
59
|
+
"invalids members are, yet '#{invalids.inspect} in #{self}'"
|
54
60
|
end
|
55
61
|
|
56
|
-
instance.lock_all if lock
|
62
|
+
instance.lock_all if opts.lock
|
57
63
|
}
|
58
64
|
end
|
59
65
|
|
@@ -4,7 +4,8 @@ class Striuct; module ClassMethods
|
|
4
4
|
|
5
5
|
ANYTHING = ::Validation::Condition::ANYTHING
|
6
6
|
|
7
|
-
|
7
|
+
# @return [Class]
|
8
|
+
ADD_MEMBER_OptArg = OptionalArgument.define {
|
8
9
|
opt :default_value, aliases: [:default]
|
9
10
|
opt :default_proc, aliases: [:lazy_default]
|
10
11
|
conflict :default_value, :default_proc
|
@@ -30,7 +31,7 @@ class Striuct; module ClassMethods
|
|
30
31
|
raise "can't modify frozen Class" if frozen?
|
31
32
|
raise "already closed to add member in #{self}" if closed?
|
32
33
|
|
33
|
-
options =
|
34
|
+
options = ADD_MEMBER_OptArg.parse options
|
34
35
|
autonym = autonym.to_sym # First difinition for an autonym
|
35
36
|
|
36
37
|
raise ArgumentError, %Q!already exist name "#{autonym}"! if member? autonym
|
data/striuct.gemspec
CHANGED
@@ -12,13 +12,13 @@ Gem::Specification.new do |gem|
|
|
12
12
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
13
13
|
gem.name = 'striuct'
|
14
14
|
gem.require_paths = ['lib']
|
15
|
-
gem.version = '0.4.
|
15
|
+
gem.version = '0.4.2'
|
16
16
|
|
17
17
|
gem.required_ruby_version = '>= 1.9.2'
|
18
18
|
|
19
19
|
gem.add_runtime_dependency 'validation', '~> 0.0.3'
|
20
20
|
gem.add_runtime_dependency 'optionalargument', '~> 0.0.3'
|
21
|
-
gem.add_runtime_dependency 'keyvalidatable', '~> 0.0.
|
21
|
+
gem.add_runtime_dependency 'keyvalidatable', '~> 0.0.5'
|
22
22
|
|
23
23
|
gem.add_development_dependency 'yard', '~> 0.8'
|
24
24
|
gem.add_development_dependency 'rake'
|
@@ -77,6 +77,10 @@ class Test_Striuct_Subclass_Class_Constructor < Test::Unit::TestCase
|
|
77
77
|
sth = Sth[hoge: 7, foo: 8]
|
78
78
|
|
79
79
|
assert_equal [8, nil, 7], sth.values
|
80
|
+
|
81
|
+
sth = Sth['hoge' => 7, 'foo' => 8]
|
82
|
+
|
83
|
+
assert_equal [8, nil, 7], sth.values
|
80
84
|
end
|
81
85
|
|
82
86
|
def test_for_pairs_from_struct
|
data/test/test_version.rb
CHANGED
@@ -6,9 +6,8 @@ class Test_Striuct_Version < Test::Unit::TestCase
|
|
6
6
|
assert_same false, Striuct.const_defined?(:VERSION, false)
|
7
7
|
end
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
#end
|
9
|
+
def test_const_version_of_dependencies
|
10
|
+
assert_same false, Striuct.const_defined?(:VERSION, true)
|
11
|
+
end
|
13
12
|
|
14
13
|
end
|
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.2
|
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-10-
|
12
|
+
date: 2012-10-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: validation
|
16
|
-
requirement: &
|
16
|
+
requirement: &11390460 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.0.3
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *11390460
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: optionalargument
|
27
|
-
requirement: &
|
27
|
+
requirement: &11389980 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,21 +32,21 @@ dependencies:
|
|
32
32
|
version: 0.0.3
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *11389980
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: keyvalidatable
|
38
|
-
requirement: &
|
38
|
+
requirement: &11389500 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version: 0.0.
|
43
|
+
version: 0.0.5
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *11389500
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: yard
|
49
|
-
requirement: &
|
49
|
+
requirement: &11389040 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0.8'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *11389040
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rake
|
60
|
-
requirement: &
|
60
|
+
requirement: &11388640 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *11388640
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: bundler
|
71
|
-
requirement: &
|
71
|
+
requirement: &11388180 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *11388180
|
80
80
|
description: ! "Validatable, Inheritable, Member Aliasing,\n Conflict Management,
|
81
81
|
Default Value, Divide nil with unassign,\n Lock setter of each member, Hash flendly
|
82
82
|
API, ... And more Struct++ features :)"
|
@@ -91,7 +91,7 @@ files:
|
|
91
91
|
- .yardopts
|
92
92
|
- Gemfile
|
93
93
|
- History.old(~0.3.n).rdoc
|
94
|
-
- LICENSE
|
94
|
+
- MIT-LICENSE
|
95
95
|
- README.md
|
96
96
|
- Rakefile
|
97
97
|
- benchmark/basics.rb
|
/data/{LICENSE → MIT-LICENSE}
RENAMED
File without changes
|