[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