try-catch 1.0.0 → 1.2.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: 84f2bba2b110f675a2f70f1ff631d8c5d180d13a
4
- data.tar.gz: e1a3891ab124ac5c24096806fc1bb0b4f636c1e5
3
+ metadata.gz: 345103aaa3a3a13455a9efa6c7d8aaab523fdc3b
4
+ data.tar.gz: d8862c5da29c4fba29311f2cbc7f3ec44df656ec
5
5
  SHA512:
6
- metadata.gz: d816e1e719538e3270a1bddaffe5a673b6c8253e41d03ba623d36994da58d564b89fb9df26dfa97646726d0d687c6aa904fb8245b334a520b2d78a473df958d9
7
- data.tar.gz: 6203816e7dd020974de6686e9ed63f846f277aa5fde402c7cfee841a7e84ceeaa05a9a37f50ee2fc1381b4d8b730ff28e015213dc5403ca583391d4c9cb457d5
6
+ metadata.gz: a4ef0166e36f785139ff5efbc52c09fff386e0ca83ef83fb1e571381aa25f178cebf005305df66ac9d94ae150548b1933e9ffacf19879e0d0491af8dc4dd6114
7
+ data.tar.gz: 22dee0fd8c9b6a6b7af555a052c5f7fa015c3d778e32eb8a5664066865f3137a0d4e44004b8e594e21452c98c698b791a9c2e514f71cdc24ce716997df9c293c
@@ -1,11 +1,18 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- try-catch (1.0.0)
4
+ try-catch (1.2.0)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
8
8
  specs:
9
+ columnize (0.3.6)
10
+ debugger (1.6.6)
11
+ columnize (>= 0.3.1)
12
+ debugger-linecache (~> 1.2.0)
13
+ debugger-ruby_core_source (~> 1.3.2)
14
+ debugger-linecache (1.2.0)
15
+ debugger-ruby_core_source (1.3.2)
9
16
  rake (10.2.2)
10
17
 
11
18
  PLATFORMS
@@ -13,5 +20,6 @@ PLATFORMS
13
20
 
14
21
  DEPENDENCIES
15
22
  bundler
23
+ debugger
16
24
  rake
17
25
  try-catch!
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.2.0
@@ -1,117 +1,3 @@
1
- module TryCatch
2
- module EXT; end
3
-
4
- module Memory
5
- @@memoryspace = {}
6
- class << self
7
-
8
- def save object_id, exception
9
-
10
- begin
11
-
12
- unless exception.class <= Exception
13
- raise ArgumentError, "invalid exception attempt to be saved"
14
- end
15
-
16
- @@memoryspace[object_id] ||= []
17
-
18
- if @@memoryspace[object_id].count >= 100
19
- @@memoryspace[object_id].shift
20
- end
21
-
22
- @@memoryspace[object_id].push exception
23
-
24
- return true
25
- rescue ArgumentError
26
- return false
27
- end
28
-
29
- end
30
-
31
-
32
- #loaded_exs= @@memoryspace[object_id]
33
- #return nil if loaded_exs.nil?
34
- #return loaded_exs.pop unless loaded_exs.class != Array
35
- def load object_id
36
- ( @@memoryspace[object_id] || [] ).last
37
- end
38
-
39
-
40
- end
41
- end
42
-
43
- module Function
44
- class << self
45
-
46
- def try( self_object, *exception_classes, &block )
47
-
48
- exception_classes.each do |exception_class|
49
- unless exception_class <= Exception
50
- raise ArgumentError, "invalid Exception: #{exception_class}"
51
- end
52
- end
53
-
54
- exception_classes.push(Exception) if exception_classes.empty?
55
-
56
- begin
57
- return block.call
58
- rescue *exception_classes => ex
59
- TryCatch::Memory.save( self_object.object_id, ex )
60
- return ex
61
- end
62
-
63
- end
64
-
65
- def catch( self_object, *exception_classes, &block )
66
-
67
- exception_classes.each do |exception_class|
68
- unless exception_class <= Exception
69
- raise ArgumentError, "invalid Exception: #{exception_class}"
70
- end
71
- end
72
-
73
- exception_classes.push(Exception) if exception_classes.empty?
74
-
75
- if self_object.class <= Exception
76
- exception_obj= self_object
77
- else
78
- exception_obj= TryCatch::Memory.load( self_object.object_id )
79
- end
80
-
81
- return nil if exception_obj.nil?
82
- return exception_obj if block.nil?
83
-
84
-
85
-
86
- if exception_classes.map{ |exc| exception_obj.class <= exc }.include?(true)
87
-
88
- if block.parameters.empty?
89
- return block.call
90
- else
91
- return block.call exception_obj
92
- end
93
-
94
- else
95
- return exception_obj
96
- end
97
-
98
- end
99
-
100
- end
101
- end
102
-
103
- module EXT::Object
104
-
105
- def try *exception_classes, &block
106
- ::TryCatch::Function.try self, *exception_classes, &block
107
- end
108
-
109
- def catch *exception_classes, &block
110
- ::TryCatch::Function.catch self, *exception_classes, &block
111
- end
112
-
113
- end
114
-
115
- end
116
-
117
- Object.__send__ :include, TryCatch::EXT::Object
1
+ require 'try-catch/memory'
2
+ require 'try-catch/functions'
3
+ require 'try-catch/syntax'
@@ -0,0 +1,64 @@
1
+ module TryCatch
2
+
3
+ module Function
4
+ class << self
5
+
6
+ def try( self_object, *exception_classes, &block )
7
+
8
+ exception_classes.each do |exception_class|
9
+ unless exception_class <= Exception
10
+ raise ArgumentError, "invalid Exception: #{exception_class}"
11
+ end
12
+ end
13
+
14
+ exception_classes.push(Exception) if exception_classes.empty?
15
+
16
+ begin
17
+ return block.call
18
+ rescue *exception_classes => ex
19
+ TryCatch::Memory.save( self_object.object_id, ex )
20
+ TryCatch::Memory.memory_agent
21
+
22
+ return ex
23
+
24
+ end
25
+
26
+ end
27
+
28
+ def catch( self_object, *exception_classes, &block )
29
+
30
+ exception_classes.each do |exception_class|
31
+ unless exception_class <= Exception
32
+ raise ArgumentError, "invalid Exception: #{exception_class}"
33
+ end
34
+ end
35
+
36
+ exception_classes.push(Exception) if exception_classes.empty?
37
+
38
+ if self_object.class <= Exception
39
+ exception_obj= self_object
40
+ else
41
+ exception_obj= TryCatch::Memory.load( self_object.object_id )
42
+ end
43
+
44
+ return nil if exception_obj.nil?
45
+ return exception_obj if block.nil?
46
+
47
+ if exception_classes.map{ |exc| exception_obj.class <= exc }.include?(true)
48
+
49
+ if block.parameters.empty?
50
+ return block.call
51
+ else
52
+ return block.call exception_obj
53
+ end
54
+
55
+ else
56
+ return exception_obj
57
+ end
58
+
59
+ end
60
+
61
+ end
62
+ end
63
+
64
+ end
@@ -0,0 +1,95 @@
1
+ module TryCatch
2
+
3
+ module Memory
4
+ @@memoryspace = {}
5
+ class << self
6
+
7
+ def init_memory_allocation opts={}
8
+ raise(ArgumentError) unless opts.class <= Hash
9
+
10
+ opts[:thread] ||= opts.delete(:t) || Thread.current
11
+ opts[:object_id] ||= opts.delete(:o) || opts.delete(:object)
12
+
13
+ @@memoryspace[opts[:thread]] ||= {}
14
+ unless opts[:object_id].nil?
15
+ @@memoryspace[opts[:thread]][opts[:object_id]] ||= []
16
+ end
17
+
18
+ return nil
19
+ end
20
+
21
+ def save object_id, exception
22
+
23
+ begin
24
+
25
+ init_memory_allocation o: object_id
26
+ @@memoryspace[Thread.current][object_id].push exception
27
+
28
+ return true
29
+ rescue ArgumentError
30
+ return false
31
+ end
32
+
33
+ end
34
+
35
+ #loaded_exs= @@memoryspace[object_id]
36
+ #return nil if loaded_exs.nil?
37
+ #return loaded_exs.pop unless loaded_exs.class != Array
38
+ def load object_id
39
+
40
+ return nil if @@memoryspace[Thread.current].nil?
41
+ return @@memoryspace[Thread.current][object_id].last
42
+
43
+ end
44
+
45
+ def pop object_id
46
+
47
+ return nil if @@memoryspace[Thread.current].nil?
48
+
49
+ unless @@memoryspace[Thread.current][object_id].nil?
50
+ @@memoryspace[Thread.current][object_id].pop
51
+ end
52
+
53
+ end
54
+
55
+ def clean_memory_by_object_id object_id, thread= Thread.current
56
+
57
+ init_memory_allocation t: thread, o: object_id
58
+ if @@memoryspace[thread][object_id].count >= 20
59
+ ( @@memoryspace[thread][object_id].count - 10 ).times{ @@memoryspace[thread][object_id].shift }
60
+ end
61
+
62
+ end
63
+
64
+ def clean_thread_memory thread= Thread.current
65
+
66
+ init_memory_allocation t: thread
67
+ @@memoryspace[thread].keys.each{ |object_id| clean_memory_by_object_id(object_id) }
68
+
69
+ end
70
+
71
+ def memory_clean
72
+ Thread.list.each{ |thr| clean_thread_memory(thr) }
73
+ end
74
+
75
+ def memory_agent
76
+
77
+ @@memory_agent ||= nil
78
+ if @@memory_agent.nil?
79
+
80
+ @@memory_agent= ::Thread.new{
81
+ loop{
82
+ sleep(60)
83
+ Memory.memory_clean
84
+ }
85
+ }
86
+
87
+ end
88
+ return @@memory_agent
89
+
90
+ end
91
+
92
+ end
93
+ end
94
+
95
+ end
@@ -0,0 +1,18 @@
1
+ module TryCatch
2
+
3
+ EXT= Module.new
4
+ module EXT::Object
5
+
6
+ def try *exception_classes, &block
7
+ ::TryCatch::Function.try self, *exception_classes, &block
8
+ end
9
+
10
+ def catch *exception_classes, &block
11
+ ::TryCatch::Function.catch self, *exception_classes, &block
12
+ end
13
+
14
+ end
15
+
16
+ end
17
+
18
+ Object.__send__ :include, TryCatch::EXT::Object
@@ -1,3 +1,8 @@
1
- require_relative '../lib/try-catch'
1
+ require_relative '../lib/try-catch/memory'
2
+ require_relative '../lib/try-catch/functions'
3
+ require_relative '../lib/try-catch/syntax'
2
4
 
3
- catch(NoMethodError) { |ex| puts ex.to_s.upcase }
5
+ require 'debugger'
6
+
7
+ try { puts("hello world".z) }
8
+ catch(NoMethodError) { |ex| puts ex.to_s.upcase }
@@ -19,6 +19,6 @@ Gem::Specification.new do |spec|
19
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
20
  spec.require_paths = ["lib"]
21
21
 
22
- %W[ rake bundler ].each{ |gem_name| spec.add_development_dependency(gem_name) }
22
+ %W[ rake bundler debugger ].each{ |gem_name| spec.add_development_dependency(gem_name) }
23
23
 
24
24
  end
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.0.0
4
+ version: 1.2.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-04-11 00:00:00.000000000 Z
11
+ date: 2014-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: debugger
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  description: " try catch blocks for Ruby! "
42
56
  email:
43
57
  - adamluzsi@gmail.com
@@ -53,6 +67,9 @@ files:
53
67
  - VERSION
54
68
  - files.rb
55
69
  - lib/try-catch.rb
70
+ - lib/try-catch/functions.rb
71
+ - lib/try-catch/memory.rb
72
+ - lib/try-catch/syntax.rb
56
73
  - test/try_catch.rb
57
74
  - try-catch.gemspec
58
75
  homepage: https://github.com/adamluzsi/try-catch