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

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

Video extension to Greenstone

File size: 6.0 KB
Line 
1#
2# irb/context.rb - irb context
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#
12require "irb/workspace"
13
14module IRB
15 class Context
16 #
17 # Arguments:
18 # input_method: nil -- stdin or readline
19 # String -- File
20 # other -- using this as InputMethod
21 #
22 def initialize(irb, workspace = nil, input_method = nil, output_method = nil)
23 @irb = irb
24 if workspace
25 @workspace = workspace
26 else
27 @workspace = WorkSpace.new
28 end
29 @thread = Thread.current if defined? Thread
30# @irb_level = 0
31
32 # copy of default configuration
33 @ap_name = IRB.conf[:AP_NAME]
34 @rc = IRB.conf[:RC]
35 @load_modules = IRB.conf[:LOAD_MODULES]
36
37 @use_readline = IRB.conf[:USE_READLINE]
38 @inspect_mode = IRB.conf[:INSPECT_MODE]
39
40 self.math_mode = IRB.conf[:MATH_MODE] if IRB.conf[:MATH_MODE]
41 self.use_tracer = IRB.conf[:USE_TRACER] if IRB.conf[:USE_TRACER]
42 self.use_loader = IRB.conf[:USE_LOADER] if IRB.conf[:USE_LOADER]
43 self.eval_history = IRB.conf[:EVAL_HISTORY] if IRB.conf[:EVAL_HISTORY]
44
45 @ignore_sigint = IRB.conf[:IGNORE_SIGINT]
46 @ignore_eof = IRB.conf[:IGNORE_EOF]
47
48 @back_trace_limit = IRB.conf[:BACK_TRACE_LIMIT]
49
50 self.prompt_mode = IRB.conf[:PROMPT_MODE]
51
52 if IRB.conf[:SINGLE_IRB] or !defined?(JobManager)
53 @irb_name = IRB.conf[:IRB_NAME]
54 else
55 @irb_name = "irb#"+IRB.JobManager.n_jobs.to_s
56 end
57 @irb_path = "(" + @irb_name + ")"
58
59 case input_method
60 when nil
61 case use_readline?
62 when nil
63 if (defined?(ReadlineInputMethod) && STDIN.tty? &&
64 IRB.conf[:PROMPT_MODE] != :INF_RUBY)
65 @io = ReadlineInputMethod.new
66 else
67 @io = StdioInputMethod.new
68 end
69 when false
70 @io = StdioInputMethod.new
71 when true
72 if defined?(ReadlineInputMethod)
73 @io = ReadlineInputMethod.new
74 else
75 @io = StdioInputMethod.new
76 end
77 end
78
79 when String
80 @io = FileInputMethod.new(input_method)
81 @irb_name = File.basename(input_method)
82 @irb_path = input_method
83 else
84 @io = input_method
85 end
86 self.save_history = IRB.conf[:SAVE_HISTORY] if IRB.conf[:SAVE_HISTORY]
87
88 if output_method
89 @output_method = output_method
90 else
91 @output_method = StdioOutputMethod.new
92 end
93
94 @verbose = IRB.conf[:VERBOSE]
95 @echo = IRB.conf[:ECHO]
96 if @echo.nil?
97 @echo = true
98 end
99 @debug_level = IRB.conf[:DEBUG_LEVEL]
100 end
101
102 def main
103 @workspace.main
104 end
105
106 attr_reader :workspace_home
107 attr_accessor :workspace
108 attr_reader :thread
109 attr_accessor :io
110
111 attr_accessor :irb
112 attr_accessor :ap_name
113 attr_accessor :rc
114 attr_accessor :load_modules
115 attr_accessor :irb_name
116 attr_accessor :irb_path
117
118 attr_reader :use_readline
119 attr_reader :inspect_mode
120
121 attr_reader :prompt_mode
122 attr_accessor :prompt_i
123 attr_accessor :prompt_s
124 attr_accessor :prompt_c
125 attr_accessor :prompt_n
126 attr_accessor :auto_indent_mode
127 attr_accessor :return_format
128
129 attr_accessor :ignore_sigint
130 attr_accessor :ignore_eof
131 attr_accessor :echo
132 attr_accessor :verbose
133 attr_reader :debug_level
134
135 attr_accessor :back_trace_limit
136
137 alias use_readline? use_readline
138 alias rc? rc
139 alias ignore_sigint? ignore_sigint
140 alias ignore_eof? ignore_eof
141 alias echo? echo
142
143 def verbose?
144 if @verbose.nil?
145 if defined?(ReadlineInputMethod) && @io.kind_of?(ReadlineInputMethod)
146 false
147 elsif !STDIN.tty? or @io.kind_of?(FileInputMethod)
148 true
149 else
150 false
151 end
152 end
153 end
154
155 def prompting?
156 verbose? || (STDIN.tty? && @io.kind_of?(StdioInputMethod) ||
157 (defined?(ReadlineInputMethod) && @io.kind_of?(ReadlineInputMethod)))
158 end
159
160 attr_reader :last_value
161
162 def set_last_value(value)
163 @last_value = value
164 @workspace.evaluate self, "_ = IRB.CurrentContext.last_value"
165 end
166
167 attr_reader :irb_name
168
169 def prompt_mode=(mode)
170 @prompt_mode = mode
171 pconf = IRB.conf[:PROMPT][mode]
172 @prompt_i = pconf[:PROMPT_I]
173 @prompt_s = pconf[:PROMPT_S]
174 @prompt_c = pconf[:PROMPT_C]
175 @prompt_n = pconf[:PROMPT_N]
176 @return_format = pconf[:RETURN]
177 if ai = pconf.include?(:AUTO_INDENT)
178 @auto_indent_mode = ai
179 else
180 @auto_indent_mode = IRB.conf[:AUTO_INDENT]
181 end
182 end
183
184 def inspect?
185 @inspect_mode.nil? or @inspect_mode
186 end
187
188 def file_input?
189 @io.class == FileInputMethod
190 end
191
192 def inspect_mode=(opt)
193 if opt
194 @inspect_mode = opt
195 else
196 @inspect_mode = !@inspect_mode
197 end
198 print "Switch to#{unless @inspect_mode; ' non';end} inspect mode.\n" if verbose?
199 @inspect_mode
200 end
201
202 def use_readline=(opt)
203 @use_readline = opt
204 print "use readline module\n" if @use_readline
205 end
206
207 def debug_level=(value)
208 @debug_level = value
209 RubyLex.debug_level = value
210 SLex.debug_level = value
211 end
212
213 def debug?
214 @debug_level > 0
215 end
216
217 def evaluate(line, line_no)
218 @line_no = line_no
219 set_last_value(@workspace.evaluate(self, line, irb_path, line_no))
220# @workspace.evaluate("_ = IRB.conf[:MAIN_CONTEXT]._")
221# @_ = @workspace.evaluate(line, irb_path, line_no)
222 end
223
224 alias __exit__ exit
225 def exit(ret = 0)
226 IRB.irb_exit(@irb, ret)
227 end
228
229 NOPRINTING_IVARS = ["@last_value"]
230 NO_INSPECTING_IVARS = ["@irb", "@io"]
231 IDNAME_IVARS = ["@prompt_mode"]
232
233 alias __inspect__ inspect
234 def inspect
235 array = []
236 for ivar in instance_variables.sort{|e1, e2| e1 <=> e2}
237 name = ivar.sub(/^@(.*)$/){$1}
238 val = instance_eval(ivar)
239 case ivar
240 when *NOPRINTING_IVARS
241 array.push format("conf.%s=%s", name, "...")
242 when *NO_INSPECTING_IVARS
243 array.push format("conf.%s=%s", name, val.to_s)
244 when *IDNAME_IVARS
245 array.push format("conf.%s=:%s", name, val.id2name)
246 else
247 array.push format("conf.%s=%s", name, val.inspect)
248 end
249 end
250 array.join("\n")
251 end
252 alias __to_s__ to_s
253 alias to_s inspect
254 end
255end
Note: See TracBrowser for help on using the repository browser.