source: extensions/gsdl-video/trunk/installed/cmdline/lib/ruby/1.8/irb/ext/history.rb@ 18425

Last change on this file since 18425 was 18425, checked in by davidb, 15 years ago

Video extension to Greenstone

File size: 2.1 KB
Line 
1#
2# history.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
13module IRB
14
15 class Context
16
17 NOPRINTING_IVARS.push "@eval_history_values"
18
19 alias _set_last_value set_last_value
20
21 def set_last_value(value)
22 _set_last_value(value)
23
24# @workspace.evaluate self, "_ = IRB.CurrentContext.last_value"
25 if @eval_history #and !@eval_history_values.equal?(llv)
26 @eval_history_values.push @line_no, @last_value
27 @workspace.evaluate self, "__ = IRB.CurrentContext.instance_eval{@eval_history_values}"
28 end
29
30 @last_value
31 end
32
33 attr_reader :eval_history
34 def eval_history=(no)
35 if no
36 if defined?(@eval_history) && @eval_history
37 @eval_history_values.size(no)
38 else
39 @eval_history_values = History.new(no)
40 IRB.conf[:__TMP__EHV__] = @eval_history_values
41 @workspace.evaluate(self, "__ = IRB.conf[:__TMP__EHV__]")
42 IRB.conf.delete(:__TMP_EHV__)
43 end
44 else
45 @eval_history_values = nil
46 end
47 @eval_history = no
48 end
49 end
50
51 class History
52 @RCS_ID='-$Id: history.rb 11708 2007-02-12 23:01:19Z shyouhei $-'
53
54 def initialize(size = 16)
55 @size = size
56 @contents = []
57 end
58
59 def size(size)
60 if size != 0 && size < @size
61 @contents = @contents[@size - size .. @size]
62 end
63 @size = size
64 end
65
66 def [](idx)
67 begin
68 if idx >= 0
69 @contents.find{|no, val| no == idx}[1]
70 else
71 @contents[idx][1]
72 end
73 rescue NameError
74 nil
75 end
76 end
77
78 def push(no, val)
79 @contents.push [no, val]
80 @contents.shift if @size != 0 && @contents.size > @size
81 end
82
83 alias real_inspect inspect
84
85 def inspect
86 if @contents.empty?
87 return real_inspect
88 end
89
90 unless (last = @contents.pop)[1].equal?(self)
91 @contents.push last
92 last = nil
93 end
94 str = @contents.collect{|no, val|
95 if val.equal?(self)
96 "#{no} ...self-history..."
97 else
98 "#{no} #{val.inspect}"
99 end
100 }.join("\n")
101 if str == ""
102 str = "Empty."
103 end
104 @contents.push last if last
105 str
106 end
107 end
108end
109
110
Note: See TracBrowser for help on using the repository browser.