From: dominic sisneros Date: 2004-10-16T23:50:16+09:00 Subject: Re: eRuby for Windows This site probably has the best documentation. http://www2a.biglobe.ne.jp/~seki/ruby/erb.html Also, the code generation in Ruby uses Erb and has examples On Oct 13, 2004, at 7:39 AM, Thomas Leitner wrote: > On Wed, 13 Oct 2004 22:21:27 +0900 > Gavin Kistner wrote: > > | On Oct 13, 2004, at 3:22 AM, David Heinemeier Hansson wrote: > | > Yes, it's called ERb and is basically a Ruby-version of eRuby. It's > | > even included in the standard library with Ruby 1.8.x. Have a look > | > at http://www.ruby-doc.org/stdlib/libdoc/erb/rdoc/index.html > | > | Awesome. Thanks, David! > | > | Except...erm...there's no documentation. > | > | When I have more free time I'd love to help out the ruby-doc project > | and document this library. But right now I'm working 12 hour days and > | don't have time to dive into the source code to figure it out. > | > | Anyone have a bit of an example showing how to set up an HTML > template > | > | with embedded ruby code, and then load that template into the program > | code at a current state (so all the necessary variables are setup) > and > | > | 'flatten' the template into the output HTML? > | > > I don't know if the following helps, but I'm currently using ERb for > one of my projects. The template does not use HTML but LaTeX, but it > is the same for HTML anyway. > > --------------------- template snippet with ERb code fragments ----- > > \ecvlastname{<%= value('header/name/surname') %>} > \ecvfirstname{<%= value('header/name/firstname') %>} > \ecvaddress{<%= value('header/address') %>} > <% if resume.elements['header/contact/phone'] %> > \ecvtelephone{<%= value('header/contact/phone') %>} > <% end %> > <% if resume.elements['header/contact/fax'] %> > \ecvfax{<%= value('header/contact/fax') %>} > <% end %> > <% if resume.elements['header/contact/email'] %> > \ecvemail{\texttt{<%= value('header/contact/email') %>}} > <% end %> > \ecvnationality{Austrian} > \ecvdateofbirth{<%= value('header/birth/date') %>} > > --------------------------------------------------------------------- > > ---------------------------- Converter class using ERb -------------- > class Converter > > attr_writer :template > attr_writer :source > attr_writer :config > > def initialize > @template = nil > @source = nil > @config = nil > end > > def convert > @processor = ResumeProcessor.new( @config ) > > # Create a new ERB object with the given template > erb = ERB.new( File.read( @template ) ) > file = File.new( @source ) > @resume = REXML::Document.new( File.new( @source ) ).root > resume = @resume > > # Evaluate the template in the current context > print erb.run( binding ) > end > > def value( path, element = @resume ) > @processor.get_value( element.elements[path] ) > end > > end > > c = Converter.new > #... set template, source and config for converter > c.convert > --------------------------------------------------------------------- > > The @template variable for the Converter class is loaded with the > filename of the template. You only have to call the erb.run method > (and probably supply a binding) and it will return the result. > > Thomas > >