Line | |
---|
1 | #
|
---|
2 | # irb/lib/tracer.rb -
|
---|
3 | # $Release Version: 0.9.5$
|
---|
4 | # $Revision: 11708 $
|
---|
5 | # $Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
|
---|
6 | # by Keiju ISHITSUKA([email protected])
|
---|
7 | #
|
---|
8 | # --
|
---|
9 | #
|
---|
10 | #
|
---|
11 | #
|
---|
12 | require "tracer"
|
---|
13 |
|
---|
14 | module IRB
|
---|
15 |
|
---|
16 | # initialize tracing function
|
---|
17 | def IRB.initialize_tracer
|
---|
18 | Tracer.verbose = false
|
---|
19 | Tracer.add_filter {
|
---|
20 | |event, file, line, id, binding, *rests|
|
---|
21 | /^#{Regexp.quote(@CONF[:IRB_LIB_PATH])}/ !~ file and
|
---|
22 | File::basename(file) != "irb.rb"
|
---|
23 | }
|
---|
24 | end
|
---|
25 |
|
---|
26 | class Context
|
---|
27 | attr_reader :use_tracer
|
---|
28 | alias use_tracer? use_tracer
|
---|
29 |
|
---|
30 | def use_tracer=(opt)
|
---|
31 | if opt
|
---|
32 | Tracer.set_get_line_procs(@irb_path) {
|
---|
33 | |line_no, *rests|
|
---|
34 | @io.line(line_no)
|
---|
35 | }
|
---|
36 | elsif !opt && @use_tracer
|
---|
37 | Tracer.off
|
---|
38 | end
|
---|
39 | @use_tracer=opt
|
---|
40 | end
|
---|
41 | end
|
---|
42 |
|
---|
43 | class WorkSpace
|
---|
44 | alias __evaluate__ evaluate
|
---|
45 | def evaluate(context, statements, file = nil, line = nil)
|
---|
46 | if context.use_tracer? && file != nil && line != nil
|
---|
47 | Tracer.on
|
---|
48 | begin
|
---|
49 | __evaluate__(context, statements, file, line)
|
---|
50 | ensure
|
---|
51 | Tracer.off
|
---|
52 | end
|
---|
53 | else
|
---|
54 | __evaluate__(context, statements, file || __FILE__, line || __LINE__)
|
---|
55 | end
|
---|
56 | end
|
---|
57 | end
|
---|
58 |
|
---|
59 | IRB.initialize_tracer
|
---|
60 | end
|
---|
61 |
|
---|
Note:
See
TracBrowser
for help on using the repository browser.