[macruby-changes] [4737] DietRB/trunk

source_changes at macosforge.org source_changes at macosforge.org
Fri Oct 8 04:07:33 PDT 2010


Revision: 4737
          http://trac.macosforge.org/projects/ruby/changeset/4737
Author:   eloy.de.enige at gmail.com
Date:     2010-10-08 04:07:32 -0700 (Fri, 08 Oct 2010)
Log Message:
-----------
Finish tty spec and simplified a bit more

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

Modified Paths:
--------------
    DietRB/trunk/.gitignore
    DietRB/trunk/bin/dietrb
    DietRB/trunk/lib/irb/driver/tty.rb
    DietRB/trunk/spec/driver/tty_spec.rb

Modified: DietRB/trunk/.gitignore
===================================================================
--- DietRB/trunk/.gitignore	2010-10-08 11:07:20 UTC (rev 4736)
+++ DietRB/trunk/.gitignore	2010-10-08 11:07:32 UTC (rev 4737)
@@ -1 +1,4 @@
-pkg
\ No newline at end of file
+pkg
+*.swp
+extensions
+t.rb

Modified: DietRB/trunk/bin/dietrb
===================================================================
--- DietRB/trunk/bin/dietrb	2010-10-08 11:07:20 UTC (rev 4736)
+++ DietRB/trunk/bin/dietrb	2010-10-08 11:07:32 UTC (rev 4737)
@@ -32,9 +32,9 @@
 IRB.formatter.filter_from_backtrace << /^#{__FILE__}/
 
 if ARGV.empty?
-  # require 'irb/driver/readline'
+  require 'irb/driver/readline'
   # require 'irb/driver/tty'
-  require 'irb/driver/socket'
+  # require 'irb/driver/socket'
 else
   path = ARGV.shift
   require 'irb/driver/file'

Modified: DietRB/trunk/lib/irb/driver/tty.rb
===================================================================
--- DietRB/trunk/lib/irb/driver/tty.rb	2010-10-08 11:07:20 UTC (rev 4736)
+++ DietRB/trunk/lib/irb/driver/tty.rb	2010-10-08 11:07:32 UTC (rev 4737)
@@ -23,22 +23,15 @@
         ""
       end
       
+      # Feeds input into a given context.
+      #
+      # Ensures that the standard output object is a OutputRedirector, or a
+      # subclass thereof.
       def run(context)
-        ensure_output_redirector do
-          while line = consume(context)
-            continue = context.process_line(line)
-            break unless continue
-          end
+        before, $stdout = $stdout, OutputRedirector.new unless $stdout.is_a?(OutputRedirector)
+        while line = consume(context)
+          break unless context.process_line(line)
         end
-      end
-      
-      # Ensure that the standard output object is a OutputRedirector. If it's
-      # already a OutputRedirector, do nothing.
-      def ensure_output_redirector
-        unless $stdout.is_a?(IRB::Driver::OutputRedirector)
-          before, $stdout = $stdout, IRB::Driver::OutputRedirector.new
-        end
-        yield
       ensure
         $stdout = before if before
       end
@@ -55,4 +48,4 @@
   end
   
   private :irb
-end
\ No newline at end of file
+end

Modified: DietRB/trunk/spec/driver/tty_spec.rb
===================================================================
--- DietRB/trunk/spec/driver/tty_spec.rb	2010-10-08 11:07:20 UTC (rev 4736)
+++ DietRB/trunk/spec/driver/tty_spec.rb	2010-10-08 11:07:32 UTC (rev 4737)
@@ -24,4 +24,20 @@
     @driver.consume(@context).should == ""
     @context.source.to_s.should == ""
   end
-end
\ No newline at end of file
+
+  it "feeds input into a given context" do
+    $from_context = false
+    @driver.input.stub_input "$from_context = true", "exit"
+    @driver.run(@context)
+    $from_context.should == true
+  end
+
+  it "makes sure there's one global output redirector while running a context" do
+    before = $stdout
+    $from_context = nil
+    @driver.input.stub_input "$from_context = $stdout", "exit"
+    @driver.run(@context)
+    $from_context.class == IRB::Driver::OutputRedirector
+    $stdout.should == before
+  end
+end
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20101008/a1b5df7b/attachment-0001.html>


More information about the macruby-changes mailing list