bogo 0.2.10 → 0.2.15
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.
- checksums.yaml +5 -5
- data/CHANGELOG.md +10 -0
- data/CONTRIBUTING.md +10 -14
- data/LICENSE +2 -2
- data/README.md +38 -1
- data/bogo.gemspec +16 -16
- data/lib/bogo/animal_strings.rb +0 -4
- data/lib/bogo/constants.rb +0 -6
- data/lib/bogo/ephemeral_file.rb +0 -3
- data/lib/bogo/http_proxy.rb +0 -2
- data/lib/bogo/lazy.rb +67 -40
- data/lib/bogo/logger.rb +78 -0
- data/lib/bogo/memoization.rb +0 -6
- data/lib/bogo/priority_queue.rb +8 -9
- data/lib/bogo/retry.rb +4 -14
- data/lib/bogo/smash.rb +5 -11
- data/lib/bogo/stack.rb +725 -0
- data/lib/bogo/utility.rb +0 -2
- data/lib/bogo/version.rb +1 -1
- data/lib/bogo.rb +13 -11
- metadata +9 -8
data/lib/bogo/smash.rb
CHANGED
@@ -1,12 +1,9 @@
|
|
1
1
|
require 'hashie'
|
2
2
|
require 'digest/sha2'
|
3
|
-
require 'bogo'
|
4
3
|
|
5
4
|
module Bogo
|
6
|
-
|
7
5
|
# Customized Hash
|
8
6
|
class Smash < Hash
|
9
|
-
|
10
7
|
class NoValue; end
|
11
8
|
NO_VALUE = NoValue.new
|
12
9
|
|
@@ -25,7 +22,7 @@ module Bogo
|
|
25
22
|
if(args.first.is_a?(::Hash))
|
26
23
|
base = args.shift
|
27
24
|
end
|
28
|
-
super
|
25
|
+
super(*args)
|
29
26
|
if(base)
|
30
27
|
self.replace(base.to_smash)
|
31
28
|
end
|
@@ -89,7 +86,8 @@ module Bogo
|
|
89
86
|
elsif(args.size > 1)
|
90
87
|
default_value = args.pop
|
91
88
|
elsif(args.size < 1)
|
92
|
-
raise ArgumentError
|
89
|
+
raise ArgumentError,
|
90
|
+
"Default value must be provided for #fetch"
|
93
91
|
end
|
94
92
|
result = retrieve(*args)
|
95
93
|
if(result == NO_VALUE)
|
@@ -105,7 +103,8 @@ module Bogo
|
|
105
103
|
# @return [Object] value set
|
106
104
|
def set(*args)
|
107
105
|
unless(args.size > 1)
|
108
|
-
raise ArgumentError
|
106
|
+
raise ArgumentError,
|
107
|
+
'Set requires at least one key and a value'
|
109
108
|
end
|
110
109
|
value = args.pop
|
111
110
|
set_key = args.pop
|
@@ -132,13 +131,11 @@ module Bogo
|
|
132
131
|
def checksum
|
133
132
|
Digest::SHA256.hexdigest(self.to_smash(:sorted).to_s)
|
134
133
|
end
|
135
|
-
|
136
134
|
end
|
137
135
|
end
|
138
136
|
|
139
137
|
# Hook helper into toplevel `Hash`
|
140
138
|
class Hash
|
141
|
-
|
142
139
|
# Convert to Smash
|
143
140
|
#
|
144
141
|
# @return [Smash]
|
@@ -198,11 +195,9 @@ class Hash
|
|
198
195
|
args.include?(:freeze) ? obj.freeze : obj
|
199
196
|
end
|
200
197
|
end
|
201
|
-
|
202
198
|
end
|
203
199
|
|
204
200
|
class Array
|
205
|
-
|
206
201
|
# Iterates searching for Hash types to auto convert
|
207
202
|
#
|
208
203
|
# @return [Array]
|
@@ -215,7 +210,6 @@ class Array
|
|
215
210
|
end
|
216
211
|
end
|
217
212
|
end
|
218
|
-
|
219
213
|
end
|
220
214
|
|
221
215
|
unless(defined?(Smash))
|