immutable-struct 2.2.0 → 2.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8e33fc2fff0d454a888f54e3897851bd398b177a
4
- data.tar.gz: ee9e7a6649f6165a9996b387b23aa16a6d76232a
3
+ metadata.gz: 08fb6160fb58ba3ab29f75f41a166a0a93332410
4
+ data.tar.gz: f9f956a1e7da833ff74758111f12f4c5742fa5dd
5
5
  SHA512:
6
- metadata.gz: 078b7691d7d08ae2bf66671243dba88f9db0f8c36ae97578cf7cd30a28857ccc937ddafbd2cc8754f418c30027291f7a2be34dd4e8481bf53a19f3d364c7d880
7
- data.tar.gz: 2729cf68d9fcd5ab0597e5596b504cf23069bed3b98b4db2927a1b64b4b306570c78d1bce726a31e03bab2540338c442a80a73d3384afe5969af77cc813e45f5
6
+ metadata.gz: 376b0a0c7b46858f974bd18563abdf5e20bf429847ea22cbfe0c88e310f446cfc79a4a5b24fc9cbf1371c86721c043cd4fa351177e7c3e8bd7c0e3a681207ffe
7
+ data.tar.gz: 2226048c79444ae2c8da4d4e7b83b8f07e87c4b024bd154e03eae7115537d9f55ad4a3a5e1b48b476af067a0bb4b289de7d294f53f208b642af5891bdb7322ee
data/.gitignore CHANGED
@@ -3,7 +3,6 @@
3
3
  .bundle
4
4
  .config
5
5
  .yardoc
6
- Gemfile.lock
7
6
  InstalledFiles
8
7
  _yardoc
9
8
  coverage
data/Gemfile.lock ADDED
@@ -0,0 +1,35 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ immutable-struct (2.2.1)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ diff-lcs (1.2.5)
10
+ rake (10.5.0)
11
+ rspec (3.4.0)
12
+ rspec-core (~> 3.4.0)
13
+ rspec-expectations (~> 3.4.0)
14
+ rspec-mocks (~> 3.4.0)
15
+ rspec-core (3.4.1)
16
+ rspec-support (~> 3.4.0)
17
+ rspec-expectations (3.4.0)
18
+ diff-lcs (>= 1.2.0, < 2.0)
19
+ rspec-support (~> 3.4.0)
20
+ rspec-mocks (3.4.1)
21
+ diff-lcs (>= 1.2.0, < 2.0)
22
+ rspec-support (~> 3.4.0)
23
+ rspec-support (3.4.1)
24
+
25
+ PLATFORMS
26
+ ruby
27
+
28
+ DEPENDENCIES
29
+ bundler (~> 1.3)
30
+ immutable-struct!
31
+ rake
32
+ rspec
33
+
34
+ BUNDLED WITH
35
+ 1.10.6
@@ -6,7 +6,7 @@
6
6
  # will be evaluated as if it were inside a class definition, allowing you
7
7
  # to add methods, include or extend modules, or do whatever else you want.
8
8
  class ImmutableStruct
9
- VERSION='2.2.0' #:nodoc:
9
+ VERSION='2.2.1' #:nodoc:
10
10
  # Create a new class with the given read-only attributes.
11
11
  #
12
12
  # attributes:: list of symbols or strings that can be used to create attributes.
@@ -65,7 +65,8 @@ class ImmutableStruct
65
65
  instance_variable_set("@#{ivar_name}", (attrs[ivar_name.to_s] || attrs[ivar_name.to_sym]).to_a)
66
66
  else
67
67
  ivar_name = attribute.to_s.gsub(/\?$/,'')
68
- instance_variable_set("@#{ivar_name}",attrs[ivar_name.to_s] || attrs[ivar_name.to_sym])
68
+ attr_value = attrs[ivar_name.to_s].nil? ? attrs[ivar_name.to_sym] : attrs[ivar_name.to_s]
69
+ instance_variable_set("@#{ivar_name}", attr_value)
69
70
  end
70
71
  end
71
72
  end
@@ -23,11 +23,21 @@ describe ImmutableStruct do
23
23
  it { should_not respond_to(:baz?) }
24
24
 
25
25
  context "instances can be created with a hash" do
26
- subject { @klass.new(foo: "FOO", bar: 42, baz: [:a,:b,:c]) }
27
26
 
28
- it { subject.foo.should == "FOO" }
29
- it { subject.bar.should == 42 }
30
- it { subject.baz.should == [:a,:b,:c] }
27
+ context 'with symbol keys' do
28
+ subject { @klass.new(foo: "FOO", bar: 42, baz: [:a,:b,:c]) }
29
+
30
+ it { subject.foo.should == "FOO" }
31
+ it { subject.bar.should == 42 }
32
+ it { subject.baz.should == [:a,:b,:c] }
33
+ end
34
+
35
+ context "with string keys" do
36
+ subject { ImmutableStruct.new(:foo) }
37
+
38
+ it { subject.new('foo' => true).foo.should == true }
39
+ it { subject.new('foo' => false).foo.should == false }
40
+ end
31
41
  end
32
42
  end
33
43
 
@@ -50,7 +60,6 @@ describe ImmutableStruct do
50
60
  it { subject.new(foo: "true").foo?.should == true }
51
61
  it { subject.new(foo: "true").foo.should == "true" }
52
62
  end
53
-
54
63
  end
55
64
 
56
65
  context "allows for values that should be coerced to collections" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: immutable-struct
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stitch Fix Engineering
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-01-07 00:00:00.000000000 Z
13
+ date: 2016-01-27 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -71,6 +71,7 @@ files:
71
71
  - CODE_OF_CONDUCT.md
72
72
  - CONTRIBUTING.md
73
73
  - Gemfile
74
+ - Gemfile.lock
74
75
  - LICENSE.txt
75
76
  - README.rdoc
76
77
  - Rakefile
@@ -98,7 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
98
99
  version: '0'
99
100
  requirements: []
100
101
  rubyforge_project:
101
- rubygems_version: 2.4.8
102
+ rubygems_version: 2.4.5
102
103
  signing_key:
103
104
  specification_version: 4
104
105
  summary: Easily create value objects without the pain of Ruby's Struct (or its setters)