[macruby-changes] [4727] DietRB/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Fri Oct 8 04:05:48 PDT 2010
Revision: 4727
http://trac.macosforge.org/projects/ruby/changeset/4727
Author: eloy.de.enige at gmail.com
Date: 2010-10-08 04:05:47 -0700 (Fri, 08 Oct 2010)
Log Message:
-----------
Clean up and simplify a bit and make completion work again.
From: Eloy Duran <eloy.de.enige at gmail.com>
Modified Paths:
--------------
DietRB/trunk/bin/dietrb
DietRB/trunk/lib/irb/driver/readline.rb
DietRB/trunk/lib/irb/driver/socket.rb
DietRB/trunk/lib/irb/driver/tty.rb
DietRB/trunk/lib/irb/ext/completion.rb
DietRB/trunk/lib/irb.rb
Modified: DietRB/trunk/bin/dietrb
===================================================================
--- DietRB/trunk/bin/dietrb 2010-10-08 11:05:34 UTC (rev 4726)
+++ DietRB/trunk/bin/dietrb 2010-10-08 11:05:47 UTC (rev 4727)
@@ -33,6 +33,7 @@
if ARGV.empty?
irb(self, TOPLEVEL_BINDING.dup)
+ # TODO make sure!
puts "ENDED! and this message should show up on stdout"
else
path = ARGV.shift
Modified: DietRB/trunk/lib/irb/driver/readline.rb
===================================================================
--- DietRB/trunk/lib/irb/driver/readline.rb 2010-10-08 11:05:34 UTC (rev 4726)
+++ DietRB/trunk/lib/irb/driver/readline.rb 2010-10-08 11:05:47 UTC (rev 4727)
@@ -10,9 +10,12 @@
super
::Readline.input = @input
::Readline.output = @output
+ ::Readline.completion_proc = IRB::Completion.new
end
- def readline
+ # Assigns a context to the completion object and waits for input.
+ def readline(context)
+ ::Readline.completion_proc.context = context
::Readline.readline(context.prompt, true)
end
end
Modified: DietRB/trunk/lib/irb/driver/socket.rb
===================================================================
--- DietRB/trunk/lib/irb/driver/socket.rb 2010-10-08 11:05:34 UTC (rev 4726)
+++ DietRB/trunk/lib/irb/driver/socket.rb 2010-10-08 11:05:47 UTC (rev 4727)
@@ -1,4 +1,3 @@
-# require 'irb/driver/readline'
require 'irb/driver/tty'
require 'socket'
Modified: DietRB/trunk/lib/irb/driver/tty.rb
===================================================================
--- DietRB/trunk/lib/irb/driver/tty.rb 2010-10-08 11:05:34 UTC (rev 4726)
+++ DietRB/trunk/lib/irb/driver/tty.rb 2010-10-08 11:05:47 UTC (rev 4727)
@@ -1,25 +1,4 @@
module IRB
- # class Context
- # class << self
- # # attr_accessor :current
- # def current
- # Thread.current[:context]
- # end
- #
- # def current=(context)
- # Thread.current[:context] = context
- # end
- #
- # # TODO move into driver
- # # def make_current(context)
- # # before, self.current = self.current, context
- # # yield
- # # ensure
- # # self.current = before
- # # end
- # end
- # end
-
class << self
attr_accessor :driver_class
@@ -36,7 +15,6 @@
break if driver = thread[:irb_driver]
end
end
- p driver
driver || driver_class.new
end
end
@@ -102,16 +80,16 @@
@thread_group.add(Thread.current)
end
- def readline
- @output.print(current_context.prompt)
+ def readline(context)
+ @output.print(context.prompt)
@input.gets
end
# TODO make it take the current context instead of storing it
- def consume
- readline
+ def consume(context)
+ readline(context)
rescue Interrupt
- current_context.clear_buffer
+ context.clear_buffer
""
end
@@ -126,23 +104,14 @@
def run(context)
ensure_output_redirector do
- make_current(context) do
- while line = consume
- continue = context.process_line(line)
- break unless continue
- end
+ context.driver = self
+ while line = consume(context)
+ continue = context.process_line(line)
+ break unless continue
end
end
end
- def make_current(context)
- context.driver = self
- before, self.current_context = self.current_context, context
- yield
- ensure
- self.current_context = before
- end
-
# Ensure that the standard output object is a OutputRedirector. If it's
# already a OutputRedirector, do nothing.
def ensure_output_redirector
Modified: DietRB/trunk/lib/irb/ext/completion.rb
===================================================================
--- DietRB/trunk/lib/irb/ext/completion.rb 2010-10-08 11:05:34 UTC (rev 4726)
+++ DietRB/trunk/lib/irb/ext/completion.rb 2010-10-08 11:05:47 UTC (rev 4727)
@@ -36,20 +36,30 @@
yield
}
- # Returns an array of possible completion results, with the current
- # IRB::Context.
- #
- # This is meant to be used with Readline which takes a completion proc.
- def self.call(source)
- new(IRB::Context.current, source).results
- end
+ # # Returns an array of possible completion results, with the current
+ # # IRB::Context.
+ # #
+ # # This is meant to be used with Readline which takes a completion proc.
+ # def self.call(source)
+ # new(IRB::Context.current, source).results
+ # end
- attr_reader :context, :source
+ attr_reader :source
+ attr_accessor :context
- def initialize(context, source)
- @context, @source = context, source
+ # def initialize(context, source)
+ # @context, @source = context, source
+ # end
+
+ def initialize(context = nil)
+ @context = context
end
+ def call(source)
+ @source = source
+ results
+ end
+
def evaluate(s)
@context.__evaluate__(s)
end
@@ -190,5 +200,5 @@
# * Hash: = and >
Readline.basic_word_break_characters= " \t\n`<;|&("
end
- Readline.completion_proc = IRB::Completion
+ # Readline.completion_proc = IRB::Completion
end
\ No newline at end of file
Modified: DietRB/trunk/lib/irb.rb
===================================================================
--- DietRB/trunk/lib/irb.rb 2010-10-08 11:05:34 UTC (rev 4726)
+++ DietRB/trunk/lib/irb.rb 2010-10-08 11:05:47 UTC (rev 4727)
@@ -8,8 +8,8 @@
# require 'irb/io'
# require 'irb/driver/tty'
-# require 'irb/driver/readline'
-require 'irb/driver/socket'
+require 'irb/driver/readline'
+# require 'irb/driver/socket'
require 'irb/source'
require 'irb/version'
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20101008/09b92960/attachment.html>
More information about the macruby-changes
mailing list