ice_nine 0.4.0 → 0.5.0

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/TODO CHANGED
@@ -0,0 +1,3 @@
1
+ * Add a utility method that allows "NoFreeze" subclasses to be easily added for
2
+ any constant.
3
+ * Refactor the existing NoFreeze subclasses to use the method.
data/config/flay.yml CHANGED
@@ -1,3 +1,3 @@
1
1
  ---
2
2
  threshold: 6
3
- total_score: 39.0
3
+ total_score: 37.0
data/lib/ice_nine.rb CHANGED
@@ -7,7 +7,7 @@ require 'ice_nine/support/recursion_guard'
7
7
  require 'ice_nine/freezer'
8
8
  require 'ice_nine/freezer/object'
9
9
  require 'ice_nine/freezer/no_freeze'
10
- require 'ice_nine/freezer/enumerable'
10
+ require 'ice_nine/freezer/array'
11
11
 
12
12
  require 'ice_nine/freezer/false_class'
13
13
  require 'ice_nine/freezer/hash'
@@ -0,0 +1,26 @@
1
+ # encoding: utf-8
2
+
3
+ module IceNine
4
+ class Freezer
5
+
6
+ # A freezer class for handling Array objects
7
+ class Array < Object
8
+
9
+ # Deep Freeze an Array
10
+ #
11
+ # @example
12
+ # array = IceNine:Freezer::Array.deep_freeze(%w[a b c])
13
+ # array.select(&:frozen?) # => ['a', 'b', 'c']
14
+ #
15
+ # @param [Array] array
16
+ #
17
+ # @return [Array]
18
+ #
19
+ # @api public
20
+ def self.deep_freeze(array)
21
+ super array.each { |entry| IceNine.deep_freeze(entry) }
22
+ end
23
+
24
+ end # class Array
25
+ end # class Freezer
26
+ end # module IceNine
@@ -4,7 +4,7 @@ module IceNine
4
4
  class Freezer
5
5
 
6
6
  # A freezer class for handling Struct objects
7
- class Struct < Enumerable; end
7
+ class Struct < Array; end
8
8
 
9
9
  end # class Freezer
10
10
  end # module IceNine
@@ -3,6 +3,6 @@
3
3
  module IceNine
4
4
 
5
5
  # Current gem version
6
- VERSION = '0.4.0'
6
+ VERSION = '0.5.0'
7
7
 
8
8
  end # module IceNine
@@ -0,0 +1,3 @@
1
+ require 'rbconfig'
2
+
3
+ ::Config = RbConfig
@@ -1,15 +1,14 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  require 'spec_helper'
4
- require 'ice_nine/freezer'
5
- require 'ice_nine/freezer/enumerable'
4
+ require 'ice_nine'
6
5
 
7
- describe IceNine::Freezer::Enumerable, '.deep_freeze' do
6
+ describe IceNine::Freezer::Array, '.deep_freeze' do
8
7
  subject { object.deep_freeze(value) }
9
8
 
10
9
  let(:object) { described_class }
11
10
 
12
- context 'with an Enumerable object' do
11
+ context 'with an Array object' do
13
12
  let(:value) { %w[a] }
14
13
 
15
14
  it 'returns the object' do
@@ -20,7 +19,7 @@ describe IceNine::Freezer::Enumerable, '.deep_freeze' do
20
19
  expect { subject }.should change(value, :frozen?).from(false).to(true)
21
20
  end
22
21
 
23
- it 'freezes each entry in the Enumerable' do
22
+ it 'freezes each entry in the Array' do
24
23
  subject.select(&:frozen?).should == subject
25
24
  end
26
25
  end
@@ -2,7 +2,9 @@
2
2
 
3
3
  require 'spec_helper'
4
4
  require 'ice_nine/freezer'
5
- require 'ice_nine/freezer/enumerable'
5
+ require 'ice_nine/freezer/object'
6
+ require 'ice_nine/freezer/array'
7
+ require 'ice_nine/freezer/struct'
6
8
 
7
9
  describe IceNine::Freezer, '.[]' do
8
10
  subject { object[mod] }
@@ -1,7 +1,9 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  require 'spec_helper'
4
+ require 'ice_nine/freezer'
4
5
  require 'ice_nine/freezer/no_freeze'
6
+ require 'ice_nine/freezer/false_class'
5
7
 
6
8
  describe IceNine::Freezer::FalseClass, '.deep_freeze' do
7
9
  subject { object.deep_freeze(value) }
@@ -1,7 +1,9 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  require 'spec_helper'
4
+ require 'ice_nine/freezer'
4
5
  require 'ice_nine/freezer/no_freeze'
6
+ require 'ice_nine/freezer/nil_class'
5
7
 
6
8
  describe IceNine::Freezer::NilClass, '.deep_freeze' do
7
9
  subject { object.deep_freeze(value) }
@@ -1,7 +1,9 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  require 'spec_helper'
4
+ require 'ice_nine/freezer'
4
5
  require 'ice_nine/freezer/no_freeze'
6
+ require 'ice_nine/freezer/numeric'
5
7
 
6
8
  describe IceNine::Freezer::Numeric, '.deep_freeze' do
7
9
  subject { object.deep_freeze(value) }
@@ -1,7 +1,9 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  require 'spec_helper'
4
+ require 'ice_nine/freezer'
4
5
  require 'ice_nine/freezer/no_freeze'
6
+ require 'ice_nine/freezer/symbol'
5
7
 
6
8
  describe IceNine::Freezer::Symbol, '.deep_freeze' do
7
9
  subject { object.deep_freeze(value) }
@@ -1,7 +1,10 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  require 'spec_helper'
4
+ require 'ice_nine/freezer'
5
+ require 'ice_nine/freezer/object'
4
6
  require 'ice_nine/freezer/no_freeze'
7
+ require 'ice_nine/freezer/true_class'
5
8
 
6
9
  describe IceNine::Freezer::TrueClass, '.deep_freeze' do
7
10
  subject { object.deep_freeze(value) }
@@ -203,8 +203,8 @@ begin
203
203
  puts 'Well done! Your code withstood a heckling.'
204
204
  end
205
205
  end
206
- rescue LoadError => e
206
+ rescue LoadError
207
207
  task :heckle do
208
- abort 'Heckle or mspec is not available. In order to run heckle, you must: gem install heckle mspec' << e
208
+ abort 'Heckle or mspec is not available. In order to run heckle, you must: gem install heckle mspec'
209
209
  end
210
210
  end
data/tasks/spec.rake CHANGED
@@ -8,11 +8,13 @@ begin
8
8
 
9
9
  namespace :spec do
10
10
  Spec::Rake::SpecTask.new(:integration) do |t|
11
- t.pattern = 'spec/integration/**/*_spec.rb'
11
+ t.ruby_opts = %w[ -r./spec/support/config_alias ]
12
+ t.pattern = 'spec/integration/**/*_spec.rb'
12
13
  end
13
14
 
14
15
  Spec::Rake::SpecTask.new(:unit) do |t|
15
- t.pattern = 'spec/unit/**/*_spec.rb'
16
+ t.ruby_opts = %w[ -r./spec/support/config_alias ]
17
+ t.pattern = 'spec/unit/**/*_spec.rb'
16
18
  end
17
19
  end
18
20
  rescue LoadError
metadata CHANGED
@@ -1,67 +1,58 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ice_nine
3
- version: !ruby/object:Gem::Version
4
- hash: 15
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.0
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 4
9
- - 0
10
- version: 0.4.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Dan Kubb
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-04-01 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-10-25 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: rake
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
18
+ requirements:
26
19
  - - ~>
27
- - !ruby/object:Gem::Version
28
- hash: 11
29
- segments:
30
- - 0
31
- - 9
32
- - 2
33
- - 2
20
+ - !ruby/object:Gem::Version
34
21
  version: 0.9.2.2
35
22
  type: :development
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: rspec
39
23
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 0.9.2.2
30
+ - !ruby/object:Gem::Dependency
31
+ name: rspec
32
+ requirement: !ruby/object:Gem::Requirement
41
33
  none: false
42
- requirements:
34
+ requirements:
43
35
  - - ~>
44
- - !ruby/object:Gem::Version
45
- hash: 31
46
- segments:
47
- - 1
48
- - 3
49
- - 2
36
+ - !ruby/object:Gem::Version
50
37
  version: 1.3.2
51
38
  type: :development
52
- version_requirements: *id002
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 1.3.2
53
46
  description: Deep Freeze Ruby Objects
54
- email:
47
+ email:
55
48
  - dan.kubb@gmail.com
56
49
  executables: []
57
-
58
50
  extensions: []
59
-
60
- extra_rdoc_files:
51
+ extra_rdoc_files:
61
52
  - LICENSE
62
53
  - README.md
63
54
  - TODO
64
- files:
55
+ files:
65
56
  - .gitignore
66
57
  - .pelusa.yml
67
58
  - .rvmrc
@@ -81,7 +72,7 @@ files:
81
72
  - lib/ice_nine.rb
82
73
  - lib/ice_nine/core_ext/object.rb
83
74
  - lib/ice_nine/freezer.rb
84
- - lib/ice_nine/freezer/enumerable.rb
75
+ - lib/ice_nine/freezer/array.rb
85
76
  - lib/ice_nine/freezer/false_class.rb
86
77
  - lib/ice_nine/freezer/hash.rb
87
78
  - lib/ice_nine/freezer/hash/state.rb
@@ -101,9 +92,10 @@ files:
101
92
  - spec/rcov.opts
102
93
  - spec/spec.opts
103
94
  - spec/spec_helper.rb
95
+ - spec/support/config_alias.rb
104
96
  - spec/unit/ice_nine/class_methods/deep_freeze_spec.rb
97
+ - spec/unit/ice_nine/freezer/array/class_methods/deep_freeze_spec.rb
105
98
  - spec/unit/ice_nine/freezer/class_methods/element_reference_spec.rb
106
- - spec/unit/ice_nine/freezer/enumerable/class_methods/deep_freeze_spec.rb
107
99
  - spec/unit/ice_nine/freezer/false_class/class_methods/deep_freeze_spec.rb
108
100
  - spec/unit/ice_nine/freezer/hash/class_methods/deep_freeze_spec.rb
109
101
  - spec/unit/ice_nine/freezer/nil_class/class_methods/deep_freeze_spec.rb
@@ -128,37 +120,27 @@ files:
128
120
  - tasks/yard.rake
129
121
  homepage: https://github.com/dkubb/ice_nine
130
122
  licenses: []
131
-
132
123
  post_install_message:
133
124
  rdoc_options: []
134
-
135
- require_paths:
125
+ require_paths:
136
126
  - lib
137
- required_ruby_version: !ruby/object:Gem::Requirement
127
+ required_ruby_version: !ruby/object:Gem::Requirement
138
128
  none: false
139
- requirements:
140
- - - ">="
141
- - !ruby/object:Gem::Version
142
- hash: 3
143
- segments:
144
- - 0
145
- version: "0"
146
- required_rubygems_version: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ! '>='
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ required_rubygems_version: !ruby/object:Gem::Requirement
147
134
  none: false
148
- requirements:
149
- - - ">="
150
- - !ruby/object:Gem::Version
151
- hash: 3
152
- segments:
153
- - 0
154
- version: "0"
135
+ requirements:
136
+ - - ! '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
155
139
  requirements: []
156
-
157
140
  rubyforge_project:
158
- rubygems_version: 1.8.21
141
+ rubygems_version: 1.8.24
159
142
  signing_key:
160
143
  specification_version: 3
161
144
  summary: Deep Freeze Ruby Objects
162
145
  test_files: []
163
-
164
146
  has_rdoc:
@@ -1,29 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module IceNine
4
- class Freezer
5
-
6
- # A freezer class for handling Enumerable objects
7
- class Enumerable < Object
8
-
9
- # Deep Freeze an Enumerable
10
- #
11
- # @example
12
- # enumerable = IceNine:Freezer::Enumerable.deep_freeze(%w[a b c])
13
- # enumerable.select(&:frozen?) # => ['a', 'b', 'c']
14
- #
15
- # @param [Enumerable] enumerable
16
- #
17
- # @return [Enumerable]
18
- #
19
- # @todo use super on #each when Struct#each returns self in Rubinius
20
- #
21
- # @api public
22
- def self.deep_freeze(enumerable)
23
- enumerable.each { |entry| IceNine.deep_freeze(entry) }
24
- super enumerable
25
- end
26
-
27
- end # class Enumerable
28
- end # class Freezer
29
- end # module IceNine