[macruby-changes] [4629] DietRB/trunk

source_changes at macosforge.org source_changes at macosforge.org
Fri Oct 8 03:51:02 PDT 2010


Revision: 4629
          http://trac.macosforge.org/projects/ruby/changeset/4629
Author:   eloy.de.enige at gmail.com
Date:     2010-10-08 03:51:00 -0700 (Fri, 08 Oct 2010)
Log Message:
-----------
Make IRB::Completion quack like a Proc, so it can actually be used with Readline.

From: Eloy Duran <eloy.de.enige at gmail.com>

Modified Paths:
--------------
    DietRB/trunk/lib/irb/ext/completion.rb
    DietRB/trunk/spec/completion_spec.rb

Modified: DietRB/trunk/lib/irb/ext/completion.rb
===================================================================
--- DietRB/trunk/lib/irb/ext/completion.rb	2010-10-08 10:50:50 UTC (rev 4628)
+++ DietRB/trunk/lib/irb/ext/completion.rb	2010-10-08 10:51:00 UTC (rev 4629)
@@ -2,6 +2,10 @@
 
 module IRB
   class Completion
+    def self.call(source)
+      new(source).results
+    end
+    
     attr_reader :source
     
     def initialize(source)
@@ -17,7 +21,7 @@
       
       # p src, call
       results = Ripper::SexpBuilder.new(src).parse
-      # p results
+      # p @source, results
       
       # [:program, [:stmts_add, [:stmts_new], [x, …]]]
       #                                        ^
@@ -45,3 +49,11 @@
     end
   end
 end
+
+if defined?(Readline)
+  if Readline.respond_to?("basic_word_break_characters=")
+    # IRB adds " and ' to the chars, but that would break string literals for us
+    Readline.basic_word_break_characters= " \t\n`><=;|&{("
+  end
+  Readline.completion_proc = IRB::Completion
+end
\ No newline at end of file

Modified: DietRB/trunk/spec/completion_spec.rb
===================================================================
--- DietRB/trunk/spec/completion_spec.rb	2010-10-08 10:50:50 UTC (rev 4628)
+++ DietRB/trunk/spec/completion_spec.rb	2010-10-08 10:51:00 UTC (rev 4629)
@@ -11,6 +11,14 @@
   end
 end
 
+describe "IRB::Completion" do
+  extend CompletionHelper
+  
+  it "quacks like a Proc" do
+    IRB::Completion.call('//.').should == imethods(Regexp)
+  end
+end
+
 describe "IRB::Completion, returns all instance methods if the source ends with a period and" do
   extend CompletionHelper
   
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20101008/34b4a09a/attachment.html>


More information about the macruby-changes mailing list