git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1384 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
keiju 2001-05-08 09:28:19 +00:00
Родитель 6ea8746048
Коммит 3c1264113e
4 изменённых файлов: 61 добавлений и 27 удалений

Просмотреть файл

@ -1,6 +1,6 @@
# #
# irb.rb - irb main module # irb.rb - irb main module
# $Release Version: 0.7.3 $ # $Release Version: 0.7.4 $
# $Revision$ # $Revision$
# $Date$ # $Date$
# by Keiju ISHITSUKA(keiju@ishitsuka.com) # by Keiju ISHITSUKA(keiju@ishitsuka.com)
@ -209,8 +209,7 @@ module IRB
case @signal_status case @signal_status
when :IN_INPUT when :IN_INPUT
print "^C\n" print "^C\n"
@scanner.initialize_input raise RubyLex::TerminateLineInput
print @context.io.prompt
when :IN_EVAL when :IN_EVAL
IRB.irb_abort(self) IRB.irb_abort(self)
when :IN_LOAD when :IN_LOAD

Просмотреть файл

@ -31,7 +31,7 @@ module IRB
def thread(key) def thread(key)
th, irb = search(key) th, irb = search(key)
irb th
end end
def irb(key) def irb(key)
@ -74,7 +74,7 @@ module IRB
when Integer when Integer
@jobs[key] @jobs[key]
when Irb when Irb
@jobs.find{|k, v| v.equal?(irb)} @jobs.find{|k, v| v.equal?(key)}
when Thread when Thread
@jobs.assoc(key) @jobs.assoc(key)
else else
@ -156,6 +156,7 @@ module IRB
end end
@CONF[:IRB_RC].call(irb.context) if @CONF[:IRB_RC] @CONF[:IRB_RC].call(irb.context) if @CONF[:IRB_RC]
@JobManager.insert(irb) @JobManager.insert(irb)
@JobManager.current_job = irb
begin begin
system_exit = false system_exit = false
catch(:IRB_EXIT) do catch(:IRB_EXIT) do
@ -200,8 +201,32 @@ module IRB
@JobManager.insert(@CONF[:MAIN_CONTEXT].irb) @JobManager.insert(@CONF[:MAIN_CONTEXT].irb)
@JobManager.current_job = @CONF[:MAIN_CONTEXT].irb @JobManager.current_job = @CONF[:MAIN_CONTEXT].irb
class Irb
def signal_handle
unless @context.ignore_sigint?
print "\nabort!!\n" if @context.verbose?
exit
end
case @signal_status
when :IN_INPUT
print "^C\n"
IRB.JobManager.thread(self).raise RubyLex::TerminateLineInput
when :IN_EVAL
IRB.irb_abort(self)
when :IN_LOAD
IRB.irb_abort(self, LoadAbort)
when :IN_IRB
# ignore
else
# ignore
end
end
end
trap("SIGINT") do trap("SIGINT") do
@JobManager.current_job.signal_handle @JobManager.current_job.signal_handle
Thread.stop
end end
end end

Просмотреть файл

@ -24,6 +24,8 @@ class RubyLex
def_exception(:TkReading2TokenDuplicateError, def_exception(:TkReading2TokenDuplicateError,
"key duplicate(token_n='%s', key='%s')") "key duplicate(token_n='%s', key='%s')")
def_exception(:SyntaxError, "%s") def_exception(:SyntaxError, "%s")
def_exception(:TerminateLineInput, "Terminate Line Input")
include RubyToken include RubyToken
@ -211,27 +213,35 @@ class RubyLex
def each_top_level_statement def each_top_level_statement
initialize_input initialize_input
loop do catch(:TERM_INPUT) do
@continue = false loop do
prompt begin
unless l = lex @continue = false
break if @line == '' prompt
else unless l = lex
# p l throw :TERM_INPUT if @line == ''
@line.concat l else
if @ltype or @continue or @indent > 0 #p l
next @line.concat l
if @ltype or @continue or @indent > 0
next
end
end
if @line != "\n"
yield @line, @exp_line_no
end
break unless l
@line = ''
@exp_line_no = @line_no
@indent = 0
prompt
rescue TerminateLineInput
initialize_input
prompt
get_readed
end end
end end
if @line != "\n"
yield @line, @exp_line_no
end
break unless l
@line = ''
@exp_line_no = @line_no
@indent = 0
prompt
end end
end end

Просмотреть файл

@ -1,6 +1,6 @@
# #
# irb/version.rb - irb version definition file # irb/version.rb - irb version definition file
# $Release Version: 0.7.3$ # $Release Version: 0.7.4$
# $Revision$ # $Revision$
# $Date$ # $Date$
# by Keiju ISHITSUKA(keiju@ishitsuka.com) # by Keiju ISHITSUKA(keiju@ishitsuka.com)
@ -11,6 +11,6 @@
# #
module IRB module IRB
@RELEASE_VERSION = "0.7.3" @RELEASE_VERSION = "0.7.4"
@LAST_UPDATE_DATE = "01/04/16" @LAST_UPDATE_DATE = "01/05/08"
end end