striuct 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml CHANGED
@@ -5,13 +5,11 @@ rvm:
5
5
  - 1.9.2
6
6
  - rbx-19mode
7
7
  - jruby-head
8
- - jruby-19mode
9
8
 
10
9
  matrix:
11
10
  allow_failures:
12
11
  - rvm: rbx-19mode
13
12
  - rvm: jruby-head
14
- - rvm: jruby-19mode
15
13
 
16
14
  before_install:
17
15
  - gem install bundler
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.3
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 the file LICENSE for further details.
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
- pairs.dup.extend(KeyValidatable).validate_keys let: all_members
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={lock: true, strict: true})
44
+ def define(options={})
38
45
  raise ArgumentError, 'must with block' unless block_given?
39
- options.dup.extend(KeyValidatable).validate_keys let: [:lock, :strict]
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
- unless (yets = autonyms.select{|autonym|! instance.assign?(autonym)}).empty?
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
- if strict &&
51
- ! (invalids = autonyms.select{|autonym|! instance.valid?(autonym)}).empty?
52
-
53
- raise Validation::InvalidWritingError, "invalids members are, yet '#{invalids.inspect} in #{self}'"
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
- ADD_MEMBER_OPTIONS = OptionalArgument.define {
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 = ADD_MEMBER_OPTIONS.parse 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.1'
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.3'
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
- # I want to be this behavior
10
- #def test_const_version_of_dependencies
11
- # assert_same false, Striuct.const_defined?(:VERSION, true)
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.1
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-10 00:00:00.000000000 Z
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: &9580980 !ruby/object:Gem::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: *9580980
24
+ version_requirements: *11390460
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: optionalargument
27
- requirement: &9579740 !ruby/object:Gem::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: *9579740
35
+ version_requirements: *11389980
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: keyvalidatable
38
- requirement: &9578620 !ruby/object:Gem::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.3
43
+ version: 0.0.5
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *9578620
46
+ version_requirements: *11389500
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: yard
49
- requirement: &9169460 !ruby/object:Gem::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: *9169460
57
+ version_requirements: *11389040
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rake
60
- requirement: &9169020 !ruby/object:Gem::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: *9169020
68
+ version_requirements: *11388640
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bundler
71
- requirement: &9168420 !ruby/object:Gem::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: *9168420
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
File without changes