progress-monitor 1.8.10 → 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -16,6 +16,21 @@ class Progress
16
16
  @@progress_meters
17
17
  end
18
18
 
19
+ def self.caller_info(callers, depth = 0)
20
+ return [nil, nil] if callers.length <= depth
21
+
22
+ line = callers[depth]
23
+ if line.match(/(.*):\d+(?::in `(.*)')/)
24
+ return [$1, $2]
25
+ end
26
+
27
+ if line.match(/(.*):\d+/)
28
+ return [$1, nil ]
29
+ end
30
+
31
+ info
32
+ end
33
+
19
34
  @@monitor = false
20
35
  @@desc = ""
21
36
  @@skip = 0
@@ -24,25 +39,31 @@ class Progress
24
39
  #
25
40
  # If a description is given as a parameter it will show at the
26
41
  # beginning of the progress report.
27
- def self.monitor(desc = "", num_reports = 100, skip = 0)
42
+ def self.monitor(desc = "", num_reports = 100, stack_depth = nil, skip = 0)
28
43
  @@monitor = true
29
44
  @@desc = desc
30
45
  @@num_reports=num_reports
46
+ @@call_info = caller_info(caller)
47
+ @@stack_depth = stack_depth
31
48
  @@skip = skip
32
49
  end
33
50
 
34
51
  # Returns true if next loop must be monitored.
35
52
  #
36
53
  def self.active?
37
- if @@monitor
38
- if @@skip > 0
39
- @@skip -= 1
40
- return false
41
- else
42
- return true
43
- end
44
- else
54
+
55
+ return false unless @@monitor
56
+
57
+ if @@stack_depth != nil
58
+ call_info = caller_info(caller, @@stack_depth + 1)
59
+ return false if call_info != @@call_info
60
+ end
61
+
62
+ if @@skip > 0
63
+ @@skip -= 1
45
64
  return false
65
+ else
66
+ return true
46
67
  end
47
68
  end
48
69
 
data/samples/collect.rb CHANGED
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.dirname(__FILE__)), 'lib', 'progress-monitor')
1
+ require File.join(File.dirname(File.dirname(File.expand_path(__FILE__))), 'lib', 'progress-monitor')
2
2
 
3
3
  dc = ('a'..'z').to_a
4
4
  Progress.monitor
data/samples/depth.rb ADDED
@@ -0,0 +1,26 @@
1
+ require File.join(File.dirname(File.dirname(File.expand_path(__FILE__))), 'lib', 'progress-monitor')
2
+
3
+ def self.loop1
4
+ puts "not monitored"
5
+ 100.times {
6
+ sleep 0.01
7
+ }
8
+ end
9
+
10
+ def self.loop2
11
+ loop1
12
+ puts "Monitored"
13
+ 100.times {
14
+ sleep 0.01
15
+ }
16
+
17
+ end
18
+
19
+ Progress.monitor("Message", 100, 1)
20
+ puts "not monitored"
21
+ 100.times {
22
+ sleep 0.01
23
+ }
24
+
25
+ loop2
26
+
data/samples/file.rb CHANGED
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.dirname(__FILE__)), 'lib', 'progress-monitor')
1
+ require File.join(File.dirname(File.dirname(File.expand_path(__FILE__))), 'lib', 'progress-monitor')
2
2
 
3
3
  f = File.open('README.rdoc')
4
4
  Progress.monitor("File.each")
data/samples/hash-loop.rb CHANGED
@@ -2,7 +2,7 @@
2
2
  # print stuff. In this case, we print new lines, and the progress meter
3
3
  # is always moved to the line above the last one.
4
4
 
5
- require File.join(File.dirname(File.dirname(__FILE__)), 'lib', 'progress-monitor')
5
+ require File.join(File.dirname(File.dirname(File.expand_path(__FILE__))), 'lib', 'progress-monitor')
6
6
 
7
7
  h = Hash.new
8
8
 
data/samples/skip.rb CHANGED
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.dirname(__FILE__)), 'lib', 'progress-monitor')
1
+ require File.join(File.dirname(File.dirname(File.expand_path(__FILE__))), 'lib', 'progress-monitor')
2
2
 
3
3
  # Skip first loop
4
4
  puts ""
data/samples/times.rb CHANGED
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.dirname(__FILE__)), 'lib', 'progress-monitor')
1
+ require File.join(File.dirname(File.dirname(File.expand_path(__FILE__))), 'lib', 'progress-monitor')
2
2
 
3
3
  Progress.monitor
4
4
  10.times{|i|
data/samples/two-loops.rb CHANGED
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.dirname(__FILE__)), 'lib', 'progress-monitor')
1
+ require File.join(File.dirname(File.dirname(File.expand_path(__FILE__))), 'lib', 'progress-monitor')
2
2
 
3
3
  # Each progress meter backs up one line
4
4
  puts ""
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: progress-monitor
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.10
4
+ version: 1.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-29 00:00:00 +01:00
12
+ date: 2010-02-01 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -25,6 +25,7 @@ extra_rdoc_files:
25
25
  files:
26
26
  - lib/progress-monitor.rb
27
27
  - samples/collect.rb
28
+ - samples/depth.rb
28
29
  - samples/file.rb
29
30
  - samples/hash-loop.rb
30
31
  - samples/skip.rb