safe_dup 0.0.8 → 1.0.0

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: 3a1fa2f5d277d5480f6b45c11dbc355badc3cd56
4
- data.tar.gz: ca7ff2caadc69bcb635e31292cd1677b9f354be3
3
+ metadata.gz: 6543761fe95e533d5fad84baf23bfe063d1b6c2c
4
+ data.tar.gz: 4594e1016d11089e90aeb6ea7749fa19a149e1bc
5
5
  SHA512:
6
- metadata.gz: eef8ee0f8eb380f082276c531d2a1b37b2e6847f2db6903d2d46811b2bb66fe31d0c0c0d605561bcfa8fc432d49d674cb744c9546e489925e395ff6264a73dda
7
- data.tar.gz: a2ded1a54ee443f2c3cd21a804fd2bf5a10654128bc1c2b261533197f9405301293ee16b5158259dd23edd9279e9a094c43c5094370d0d9e67f9656d5ce1567b
6
+ metadata.gz: 9ceba90d313e5e620433d5f12ca232712c4c46adb813eebb39a9ab152c1af5c2af2da3b201992c98ba25a838f9732cc189bf7026e80ffd9454bc3c559d9e7d5d
7
+ data.tar.gz: 299e3a57d4f6cc37f3cb0b0b2c435c3e28618972b354c3ab855203b37c9fd906b9c3104149b3f92a09aecf432c5881f5fb9ab238f604d4ac671dfe26ca9275a3
data/README.md CHANGED
@@ -7,8 +7,9 @@ it does mean that the dup operation must be applied with great care.
7
7
 
8
8
  Unlike the standard dup method, the safe\_dup method does not throw an
9
9
  exception when sent to un-clonable value objects like 42 or true. These values
10
- simply return themselves. This is correct because those types of objects do
11
- not _need_ to be dupd. Instead of having a fit, the code just works!
10
+ simply return themselves. This is deemed correct because those types of objects
11
+ are immutable and do not need to be duped. Instead of raising an exception,
12
+ the code returns the immutable object instead.
12
13
 
13
14
  On a note about performance, this gem does not just rescue the exceptions
14
15
  normally generated by dup, it prevents them from occurring and wasting time
@@ -171,6 +172,21 @@ end
171
172
  Dup with the safe dup method: 450557.6 i/s
172
173
  Dup with standard dup method: 39436.6 i/s - 11.42x slower
173
174
 
175
+ #### Results: ruby 2.3.3p222 (2016-11-21 revision 56859) [i386-mingw32]
176
+ Warming up --------------------------------------
177
+ Dup with standard clone method
178
+ 5.866k i/100ms
179
+ Dup with the safe clone method
180
+ 23.721k i/100ms
181
+ Calculating -------------------------------------
182
+ Dup with standard clone method
183
+ 70.492k (± 0.4%) i/s - 357.826k in 5.076221s
184
+ Dup with the safe clone method
185
+ 523.478k (± 1.1%) i/s - 2.633M in 5.030544s
186
+
187
+ Comparison:
188
+ Dup with the safe clone method: 523477.8 i/s
189
+ Dup with standard clone method: 70491.9 i/s - 7.43x slower
174
190
 
175
191
 
176
192
  Overall: Shorter code _and_ faster. Winner, winner, chicken dinner!
@@ -2,47 +2,52 @@
2
2
 
3
3
  require_relative "safe_dup/version"
4
4
 
5
- # Now you too can dup without fear of annoying exceptions!
6
-
5
+ # Now you too can dup objects without fear of annoying exceptions!
7
6
  class Object
8
- #By default, reference types use the clone method.
7
+ #By default, reference types use the dup method.
9
8
  def safe_dup
10
9
  dup
11
10
  end
12
11
  end
13
12
 
14
- #For value types, just return self!
13
+ # For value types, just return self!
15
14
  module SafeDup
16
15
  def safe_dup
17
16
  self
18
17
  end
19
18
  end
20
19
 
21
- #Update the Ruby value types.
20
+ # Numeric can now safe dup.
22
21
  class Numeric
23
22
  include SafeDup
24
23
  end
25
24
 
25
+ # NilClass can now safe dup.
26
26
  class NilClass
27
27
  include SafeDup
28
28
  end
29
29
 
30
+ # TrueClass can now safe dup.
30
31
  class TrueClass
31
32
  include SafeDup
32
33
  end
33
34
 
35
+ # FalseClass can now safe dup.
34
36
  class FalseClass
35
37
  include SafeDup
36
38
  end
37
39
 
40
+ # Symbols can now safe dup.
38
41
  class Symbol
39
42
  include SafeDup
40
43
  end
41
44
 
45
+ # Regular expressions can now safe dup.
42
46
  class Regexp
43
47
  include SafeDup
44
48
  end
45
49
 
50
+ # Threads can now safe dup.
46
51
  class Thread
47
52
  include SafeDup
48
53
  end
@@ -1,3 +1,3 @@
1
1
  module SafeDup
2
- VERSION = "0.0.8"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -8,6 +8,11 @@ Rake::TestTask.new do |t|
8
8
  t.verbose = false
9
9
  end
10
10
 
11
+ desc "Run a scan for smelly code!"
12
+ task :reek do |t|
13
+ `reek --no-color lib > reek.txt`
14
+ end
15
+
11
16
  desc "Fire up an IRB session with safe_dup preloaded."
12
17
  task :console do
13
18
  system "ruby irbt.rb local"
@@ -0,0 +1 @@
1
+ 0 total warnings
@@ -22,4 +22,5 @@ Gem::Specification.new do |spec|
22
22
  spec.add_development_dependency "bundler", "~> 1.3"
23
23
  spec.add_development_dependency 'minitest', "~> 5.7"
24
24
  spec.add_development_dependency 'minitest_visible', "~> 0.1"
25
+ spec.add_development_dependency 'reek', "~> 5.0.2"
25
26
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: safe_dup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Camilleri
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-06 00:00:00.000000000 Z
11
+ date: 2018-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0.1'
69
+ - !ruby/object:Gem::Dependency
70
+ name: reek
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 5.0.2
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 5.0.2
69
83
  description: A safer version of the dup method that avoids unnecessary exceptions.
70
84
  email:
71
85
  - peter.c.camilleri@gmail.com
@@ -83,6 +97,7 @@ files:
83
97
  - lib/safe_dup.rb
84
98
  - lib/safe_dup/version.rb
85
99
  - rakefile.rb
100
+ - reek.txt
86
101
  - safe_dup.gemspec
87
102
  - test/safe_dup_tests.rb
88
103
  homepage: https://github.com/PeterCamilleri/safe_dup