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