On 2/2/07, Andrea Maschio <andrea.maschio / gmail.com> wrote:
> Well, that seems to be exactly what i was looking for, thank you Brian. So i
> think i could give erb every line to parse or make him parse the entire file
> before output it on the screen, right?
> now, i've got a little question more.
>
> Let's say i have a class, Foo, who calls a method of another class to print
> the output. For example
>
> class Foo
>
> @w
> @myvar
>
>
> def initialize
>    w=Writer.new
> end
>
> def print_something
-    w.put_on_screen(1)
+     w.put_on_screen(1, binding)
> end
> end
>
> class Writer
-  def put_on_screen(number)
+  def put_on_screen(number, b=TOPLEVEL_BINDING)
>     file=File.open("./screens/screen#{number}","r")
>             file.each do |line|
>               e=ERB.new(line)
-               puts e.result
+              puts e.result(b)
>             end
>  end
> end
>
> in the txt file, how can i make visible @myvar to print it on the screen?

ERB#result has another parameter, where you can pass binding - the
vars in the file will be evaluated in that context (see
http://ruby-doc.org/core/classes/ERB.html#M002835)