[macruby-changes] [4641] DietRB/trunk

source_changes at macosforge.org source_changes at macosforge.org
Fri Oct 8 03:52:50 PDT 2010


Revision: 4641
          http://trac.macosforge.org/projects/ruby/changeset/4641
Author:   eloy.de.enige at gmail.com
Date:     2010-10-08 03:52:49 -0700 (Fri, 08 Oct 2010)
Log Message:
-----------
Make IRB::Context.new accept an optional explicit binding. This is needed, for instance, if the context is for the mainObject and the binding should be TOPLEVEL_BINDING.

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

Modified Paths:
--------------
    DietRB/trunk/bin/dietrb
    DietRB/trunk/lib/irb/context.rb
    DietRB/trunk/spec/context_spec.rb

Modified: DietRB/trunk/bin/dietrb
===================================================================
--- DietRB/trunk/bin/dietrb	2010-10-08 10:52:39 UTC (rev 4640)
+++ DietRB/trunk/bin/dietrb	2010-10-08 10:52:49 UTC (rev 4641)
@@ -1,4 +1,4 @@
 #!/usr/bin/env ruby
 
 require 'irb'
-irb(self)
\ No newline at end of file
+irb(self, TOPLEVEL_BINDING)
\ No newline at end of file

Modified: DietRB/trunk/lib/irb/context.rb
===================================================================
--- DietRB/trunk/lib/irb/context.rb	2010-10-08 10:52:39 UTC (rev 4640)
+++ DietRB/trunk/lib/irb/context.rb	2010-10-08 10:52:49 UTC (rev 4641)
@@ -15,9 +15,9 @@
     
     attr_reader :object, :binding, :line, :source
     
-    def initialize(object)
+    def initialize(object, explicit_binding = nil)
       @object  = object
-      @binding = object.instance_eval { binding }
+      @binding = explicit_binding || object.instance_eval { binding }
       @line    = 1
       clear_buffer
     end

Modified: DietRB/trunk/spec/context_spec.rb
===================================================================
--- DietRB/trunk/spec/context_spec.rb	2010-10-08 10:52:39 UTC (rev 4640)
+++ DietRB/trunk/spec/context_spec.rb	2010-10-08 10:52:49 UTC (rev 4641)
@@ -29,6 +29,12 @@
     eval("y", @context.binding).should == :ok
   end
   
+  it "initializes with an object and an explicit binding" do
+    context = IRB::Context.new(Object.new, TOPLEVEL_BINDING)
+    eval("class InTopLevel; end", context.binding)
+    lambda { ::InTopLevel }.should.not.raise NameError
+  end
+  
   it "initializes with an 'empty' state" do
     @context.line.should == 1
     @context.source.should.be.instance_of IRB::Source
@@ -108,7 +114,7 @@
   it "prints the exception that occurs" do
     @context.evaluate("DoesNotExist")
     printed = @context.instance_variable_get(:@printed)
-    printed.should.match /^NameError: uninitialized constant DoesNotExist/
+    printed.should.match /^NameError:.+DoesNotExist/
   end
 end
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20101008/64e25c38/attachment.html>


More information about the macruby-changes mailing list