try-catch 1.2.0 → 1.4.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.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +11 -9
- data/VERSION +1 -1
- data/examples/try_catch.rb +8 -0
- data/examples/try_return_nil.rb +55 -0
- data/lib/try-catch/functions.rb +38 -0
- data/lib/try-catch/syntax.rb +11 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6a929e2dd08580f5df4943cc4e4c4ea2f9badaf1
|
4
|
+
data.tar.gz: c1d56de1a61958d47614b845fa8097a7778da03b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 07dea44d045e46e182636eab8817c15514ae670b90801b921ad1acd81a75eb9a3825ad6ac0501ed4738b4fbe1b0523740def18fb182163b99dbc5b0e72dbfc65
|
7
|
+
data.tar.gz: ea8e64484f6cb46153da2b84f403d8c088056e3a35e6b98137ccb3f1966ecabb27e0ac064f08174c08818be6817c9af36da70e1dc123a41985aafa5d0aa26b11
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -11,19 +11,21 @@ if you new to ruby and missing the try catch block here is a simple one for you
|
|
11
11
|
|
12
12
|
```ruby
|
13
13
|
|
14
|
-
require 'try-catch'
|
14
|
+
require 'try-catch'
|
15
15
|
|
16
|
-
try { hello world }.catch{ "not hello world " }
|
17
|
-
#> "not hello world"
|
16
|
+
try { hello world }.catch{ "not hello world " }
|
17
|
+
#> "not hello world"
|
18
18
|
|
19
|
-
try { "hello world".asdaf }.catch( NoMethodError ) { |ex| "there is and error, because #{ex}" }
|
20
|
-
#> there is and error, because undefined method `asdaf' for "hello world":String
|
19
|
+
try { "hello world".asdaf }.catch( NoMethodError ) { |ex| "there is and error, because #{ex}" }
|
20
|
+
#> there is and error, because undefined method `asdaf' for "hello world":String
|
21
21
|
|
22
|
-
#> you can cain up multiple catch for specific error
|
23
|
-
try { "hello world".asdaf }.catch( NoMethodError ) { |ex| "there is and error, because #{ex}" }
|
22
|
+
#> you can cain up multiple catch for specific error
|
23
|
+
try { "hello world".asdaf }.catch( NoMethodError ) { |ex| "there is and error, because #{ex}" }
|
24
24
|
|
25
|
-
puts try { "hello world".asdaf }.catch(ArgumentError) { "it was and argument error" }.catch( NoMethodError ) { |ex| "bla bla #{ex}" }
|
26
|
-
#> "bla bla undefined method `asdaf' for "hello world":String"
|
25
|
+
puts try { "hello world".asdaf }.catch(ArgumentError) { "it was and argument error" }.catch( NoMethodError ) { |ex| "bla bla #{ex}" }
|
26
|
+
#> "bla bla undefined method `asdaf' for "hello world":String"
|
27
|
+
|
28
|
+
puts try_nc { "hello world".asd } #> non cached try block
|
27
29
|
|
28
30
|
```
|
29
31
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.4.0
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require_relative '../lib/try-catch/memory'
|
2
|
+
require_relative '../lib/try-catch/functions'
|
3
|
+
require_relative '../lib/try-catch/syntax'
|
4
|
+
|
5
|
+
module TestA
|
6
|
+
class << self
|
7
|
+
|
8
|
+
def hello
|
9
|
+
"hello world"
|
10
|
+
end
|
11
|
+
|
12
|
+
def complex
|
13
|
+
"complex"
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
module TestB
|
20
|
+
class << self
|
21
|
+
|
22
|
+
def hello
|
23
|
+
"hello world"
|
24
|
+
end
|
25
|
+
|
26
|
+
def complex hello
|
27
|
+
"complex: #{hello.to_s}"
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
module TestC
|
35
|
+
class << self
|
36
|
+
|
37
|
+
def method_missing method_name, *args
|
38
|
+
return try?{ ::TestA.__send__(method_name,*args) } || try?{ ::TestB.__send__(method_name,*args) }
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
puts TestC.hello
|
46
|
+
puts TestC.complex
|
47
|
+
puts TestC.complex "sup!"
|
48
|
+
|
49
|
+
=begin
|
50
|
+
|
51
|
+
hello world
|
52
|
+
complex
|
53
|
+
complex: sup!
|
54
|
+
|
55
|
+
=begin
|
data/lib/try-catch/functions.rb
CHANGED
@@ -25,6 +25,44 @@ module TryCatch
|
|
25
25
|
|
26
26
|
end
|
27
27
|
|
28
|
+
# no cache version !
|
29
|
+
def try_no_cache( *exception_classes, &block )
|
30
|
+
|
31
|
+
exception_classes.each do |exception_class|
|
32
|
+
unless exception_class <= Exception
|
33
|
+
raise ArgumentError, "invalid Exception: #{exception_class}"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
exception_classes.push(Exception) if exception_classes.empty?
|
38
|
+
|
39
|
+
begin
|
40
|
+
return block.call
|
41
|
+
rescue *exception_classes => ex
|
42
|
+
return ex
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
# try that return nil overall exception captured block fail to run
|
48
|
+
def try?( *exception_classes, &block )
|
49
|
+
|
50
|
+
exception_classes.each do |exception_class|
|
51
|
+
unless exception_class <= Exception
|
52
|
+
raise ArgumentError, "invalid Exception: #{exception_class}"
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
exception_classes.push(Exception) if exception_classes.empty?
|
57
|
+
|
58
|
+
begin
|
59
|
+
return block.call
|
60
|
+
rescue *exception_classes
|
61
|
+
return nil
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
|
28
66
|
def catch( self_object, *exception_classes, &block )
|
29
67
|
|
30
68
|
exception_classes.each do |exception_class|
|
data/lib/try-catch/syntax.rb
CHANGED
@@ -4,7 +4,17 @@ module TryCatch
|
|
4
4
|
module EXT::Object
|
5
5
|
|
6
6
|
def try *exception_classes, &block
|
7
|
-
::TryCatch::Function.try self, *exception_classes, &block
|
7
|
+
::TryCatch::Function.try( self, *exception_classes, &block )
|
8
|
+
end
|
9
|
+
|
10
|
+
def try_nc *exception_classes, &block
|
11
|
+
::TryCatch::Function.try_no_cache( *exception_classes, &block )
|
12
|
+
end
|
13
|
+
|
14
|
+
alias :try_no_cache :try_nc
|
15
|
+
|
16
|
+
def try? *exception_classes, &block
|
17
|
+
::TryCatch::Function.try?( *exception_classes, &block )
|
8
18
|
end
|
9
19
|
|
10
20
|
def catch *exception_classes, &block
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: try-catch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Luzsi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-05-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -65,6 +65,8 @@ files:
|
|
65
65
|
- README.md
|
66
66
|
- Rakefile
|
67
67
|
- VERSION
|
68
|
+
- examples/try_catch.rb
|
69
|
+
- examples/try_return_nil.rb
|
68
70
|
- files.rb
|
69
71
|
- lib/try-catch.rb
|
70
72
|
- lib/try-catch/functions.rb
|