[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