On Jul 24, 6:36 ¨Βν¬ Κοεμ ΦαξδεςΧεςζ Όφκ®®®ΐπατθ®βεςλεμεω®εδυχςοτεΊ
> cldwalker wrote:
> > On Jul 23, 9:47 pm, Joel VanderWerf <vj... / path.berkeley.edu> wrote:
> >> ghorner wrote:
> >>> begin puts "=> #{eval(input).inspect}"; rescue Exception; puts
> >> Do you want
>
> >> eval(input, b)
>
> >> where b is a Binding that was constructed before the loop? Otherwise,
> >> how will this support local vars?
>
> > Joel,
> > not sure I follow. In mini-irb this works:
>
> > >> b = 2
> > => 2
> > >> 'b' * b
> > => "bb"
>
> > As does placing local variables before the loop being picked up by
> > eval. Could you elaborate?
> > Gabriel
>
> Here's a simplified version of your code:
>
> $ cat mirb.rb
> %w{readline rubygems}.each {|e| require e }
> while (input = Readline.readline('>> ', true)) != 'exit'
>  ¨Βεηιξ πυτσ Ά½£ϋεφαμ¨ιξπυτ©®ιξσπεγτύΆ» ςεσγυε Εψγεπτιοξ» πυτσ
> "Error: #{$!}" end
> end
> $ ruby mirb.rb
> > input
> => "input"
>
> This is fixable using bindings:
>
> $ cat mirb.rb
> %w{readline rubygems}.each {|e| require e }
> def get_binding; binding; end
> b = get_binding
> while (input = Readline.readline('>> ', true)) != 'exit'
>  ¨Βεηιξ πυτσ Ά½£ϋεφαμ¨ιξπυτβ©®ιξσπεγτύΆςεσγυε Εψγεπτιοξ» πυτσ
> "Error: #{$!}" end
> end
> $ ruby mirb.rb
> > input
>
> >
>
> (Now, some might say that's still a bug, but at least it doesn't expose
> a local variable of mini-irb.)

Thanks for pointing that out. Would you know why irb does some funkier
binding with its IRB.conf[:CONTEXT_MODE] option i.e. binding to a
temporary file? I asked about it here,
http://groups.google.com/group/comp.lang.ruby/browse_thread/thread/6aa102dba71850f3,
but no one seemed to know.
Now with proper binding, mini-irb stands at less than 10 lines. So I'm
still asking, what of the 5000+ loc in irb do people actually use?