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?
Thank you very much for helping
–
Andrea M.
http://www.superandrew.it
“The real problem is not whether machines think but whether men do.”
(B. F. Skinner )
On Fri, Feb 02, 2007 at 06:35:21AM +0900, Andrea M. wrote:
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’
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)
end
end
class Writer
def put_on_screen(number)
file=File.open(“./screens/screen#{number}”,“r”)
file.each do |line|
e=ERB.new(line)
puts e.result
end
end
end
in the txt file, how can i make visible @myvar to print it on the
screen?
Thanks again
2007/2/1, Brian C. [email protected]:
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’
–
Andrea M.
cell. +39 333 2672629
email: [email protected]
http://www.superandrew.it
“The real problem is not whether machines think but whether men do.”
(B. F. Skinner )
2007/2/2, Jan S. [email protected]:
print
end
file=File.open(“./screens/screen#{number}”,“r”)
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)
wow, that’s great! I didn’t understand very well how the method binding
passes that instance variables, it seems that passing a binding object
is
like passing an array of instance variable of the object for which it
is
called?
I’ve tried to look up in the docs, but i didn’ find a clear explanation.
Thanks a lot
–
Andrea M.
http://www.superandrew.it
“The real problem is not whether machines think but whether men do.”
(B. F. Skinner )
On 2/2/07, Andrea M. [email protected] wrote:
@w
@myvar
def initialize
w=Writer.new
end
def print_something
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)
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)