theusual 0.0.4 → 0.0.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5626e015b912c430bbf29ef349b9c0278486e6d3
4
- data.tar.gz: a8fd13ede49258fb7e14220a45112029d2d512fb
3
+ metadata.gz: 51de97d541d5c8a0934ea2b4a4390c2f206667e8
4
+ data.tar.gz: 222dd58985ce29ef1fc4b72185f572dd0cfe9393
5
5
  SHA512:
6
- metadata.gz: f5ec204b80a4eca317936e64ba6f0da7e9a16e643896c3bf046bb73ba0f4bf824249c46bf3d54a41ad56af0f19efae3e0d818bbf5085050dfd80575a4ba49740
7
- data.tar.gz: f4b09eac9098a009b50ce9672a413db5752ea5bdca8e84b58222fc52f7f49f5be243c8ce8d4b61b22a4a42fb9a9b026839e3febb28e1fa4fa12aceaa95d9380b
6
+ metadata.gz: fac7e54c933c172e01c740d643b70335123f35cf71fd05ac23ac9e77102df7c7990324757a16ae0fc63139e66e4ebe3fd9a03d49a8e87b0522aeb4aa484b3f18
7
+ data.tar.gz: b7919d2c8876305931982515340f2a4eaaf5fbff0df9849a92e4ea2fde4a1d8ec08b81102e470826501ccfc083ed31e5d35f6e83a59c07a0c9c44266080d421d
data/lib/theusual.rb CHANGED
@@ -1,8 +1,11 @@
1
- module TheUsual
2
- VERSION = '0.0.4'
1
+ require 'set'
2
+ require_relative 'theusual/version.rb'
3
+
3
4
 
5
+ module TheUsual
4
6
  MODULES = [
5
7
  'array',
8
+ 'failure',
6
9
  'hash',
7
10
  'ipaddr',
8
11
  'mongoid',
@@ -11,6 +14,11 @@ module TheUsual
11
14
  'time',
12
15
  ]
13
16
 
17
+ # functions defined in sub-libs that can be include-ed
18
+ # into another namespace
19
+ @include_fns = Set.new
20
+
21
+
14
22
  def self.load *modules
15
23
  # some modules need to be explicitly required
16
24
  needs_load = [
@@ -60,4 +68,19 @@ module TheUsual
60
68
  end
61
69
  end.compact
62
70
  end
71
+
72
+
73
+ def self.include_fn fn
74
+ @include_fns << fn
75
+ end
76
+
77
+
78
+ def self.included base
79
+ @include_fns.each do |name|
80
+ base.send :define_method, name do |*args|
81
+ TheUsual.method(name).send *args
82
+ end
83
+ end
84
+ end
85
+
63
86
  end
@@ -0,0 +1,30 @@
1
+ module TheUsual
2
+
3
+ def self.retry opts = {}
4
+ tries = opts[:tries] || 2
5
+
6
+ exceptions = Array(opts[:e])
7
+ exceptions += Array(opts[:exceptions])
8
+ if exceptions.empty?
9
+ exceptions = [ Exception ]
10
+ end
11
+
12
+ # callback = opts[:callback]
13
+
14
+ res = nil
15
+ tries.times do
16
+ begin
17
+ res = yield
18
+ break
19
+ rescue Exception => e
20
+ raise unless exceptions.any? {|x| e < x }
21
+ end
22
+ end
23
+
24
+ res
25
+ end
26
+
27
+ end
28
+
29
+
30
+ TheUsual::include_fn :retry
data/lib/theusual/hash.rb CHANGED
@@ -148,6 +148,15 @@ class Hash
148
148
  end
149
149
 
150
150
 
151
+ def symbolize_keys
152
+ clone.symbolize_keys!
153
+ end
154
+
155
+ def symbolize_keys!
156
+ kmap! { |key| key.to_sym rescue key }
157
+ end
158
+
159
+
151
160
  private
152
161
 
153
162
  # replace contents of hash with new stuff
@@ -0,0 +1,3 @@
1
+ module TheUsual
2
+ VERSION = '0.0.6'
3
+ end
@@ -0,0 +1,25 @@
1
+ require 'minitest/autorun'
2
+ require 'theusual'
3
+ TheUsual::load 'failure'
4
+
5
+
6
+ class FailureTest < Minitest::Test
7
+
8
+ def test_sum
9
+ data = [ true ]
10
+
11
+
12
+
13
+ [ false, true ]
14
+ [ false, false, true ]
15
+ # assert_nothing_raised RuntimeError do
16
+ # raise Exception #Assertion passes, Exception is not a RuntimeError
17
+ # end
18
+
19
+ # assert_raise NameError do
20
+ # puts x #Raises NameError, so assertion succeeds
21
+ # end
22
+
23
+ end
24
+
25
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: theusual
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Pepper
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-25 00:00:00.000000000 Z
11
+ date: 2017-02-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '10'
27
+ - !ruby/object:Gem::Dependency
28
+ name: minitest
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '5'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '5'
27
41
  description: A handful of useful hacks...good for any project
28
42
  email:
29
43
  executables: []
@@ -32,13 +46,16 @@ extra_rdoc_files: []
32
46
  files:
33
47
  - lib/theusual.rb
34
48
  - lib/theusual/array.rb
49
+ - lib/theusual/failure.rb
35
50
  - lib/theusual/hash.rb
36
51
  - lib/theusual/ipaddr.rb
37
52
  - lib/theusual/mongoid.rb
38
53
  - lib/theusual/ssh.rb
39
54
  - lib/theusual/string.rb
40
55
  - lib/theusual/time.rb
56
+ - lib/theusual/version.rb
41
57
  - test/test_array.rb
58
+ - test/test_failure.rb
42
59
  - test/test_hash.rb
43
60
  - test/test_ip_addr.rb
44
61
  - test/test_string.rb
@@ -69,6 +86,7 @@ specification_version: 4
69
86
  summary: TheUsual
70
87
  test_files:
71
88
  - test/test_array.rb
89
+ - test/test_failure.rb
72
90
  - test/test_hash.rb
73
91
  - test/test_ip_addr.rb
74
92
  - test/test_string.rb