[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Re: Parsing text files with dynamic contents

Brian Candler

2/1/2007 10:29:00 PM

On Fri, Feb 02, 2007 at 06:35:21AM +0900, Andrea Maschio wrote:
> Let's guess a simple example: i need to parse a text file, wityh variables
> inside, and then output again the resulting text to a file or to screen.
>
> -------------start example text------------
>
> hello, it is #{now}, your name is #{name}
>
>
> -------------end example text------------
>
> variables could be written also $var, or whatever else could be better.
>
> but obviously when i do
>
> file.each do |line|
> puts line #here i need to do something to find the variable and
> output the correct value
> end
>
> How would you ruby experts do the correct parsing to output values instead
> of the text content? Is there any class available that do this?

Google for 'erb' and 'eruby'

1 Answer

Jano Svitok

2/1/2007 11:34:00 PM

0

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.ht...)