Enabling/disabling HTML with Amrita

I know with Amrita, if you pass nil as the data for a template
element, it doesn't get printed. What I'm interested in is in
conditional container elements, such as <span> or <tr>, that print
their templated content when enabled. See my test below:

emschwar@wilson:/tmp$ cat bah.templ
<table>
<tr><td id="cell1" />/></tr>
<tr id="row2"><td id="cell2" /></tr>
</table>

emschwar@wilson:/tmp$ cat ./amrita-test
#!/usr/bin/ruby
require 'amrita/template'

data1 = { :cell1 => "Cell 1" }

data2 = { :cell1 => "Cell 1",
          :row2 => "testing",
          :cell2 => "Cell 2" }

template = Amrita::TemplateFile.new("bah.templ")

template.expand(STDOUT, data1)
puts
template.expand(STDOUT, data2)

emschwar@wilson:/tmp$ ./amrita-test
<table>
<tr><td>Cell 1</td></tr>

</table>

<table>
<tr><td>Cell 1</td></tr>
<tr>testing</tr>
</table>
emschwar@wilson:/tmp$

Obviously, what I'm looking for in the second case is something like
<table>
<tr><td>Cell 1</td></tr>
<tr><td>Cell 2</td></tr>
</table>

I've been resorting to templating tricks like

<tr><td id="cell2" /></tr>

but that leaves an empty table row in there when there's no 'cell2',
which is not always what I want. In the particular application I'm
using it for, it's okay, but it's kinda ugly. How can I get there
from here? Or can I?

-=Eric

···

--
Come to think of it, there are already a million monkeys on a million
typewriters, and Usenet is NOTHING like Shakespeare.
    -- Blair Houghton.

<tr><td><span amrita:id='cell2'>Cell 2</span></td></tr>

Ari

···

On Tue, 2004-06-22 at 06:33 +0900, Eric Schwartz wrote:

I know with Amrita, if you pass nil as the data for a template
element, it doesn't get printed. What I'm interested in is in
conditional container elements, such as <span> or <tr>, that print
their templated content when enabled. See my test below:

emschwar@wilson:/tmp$ cat bah.templ
<table>
<tr><td id="cell1" />/></tr>
<tr id="row2"><td id="cell2" /></tr>
</table>

emschwar@wilson:/tmp$ cat ./amrita-test
#!/usr/bin/ruby
require 'amrita/template'

data1 = { :cell1 => "Cell 1" }

data2 = { :cell1 => "Cell 1",
          :row2 => "testing",
          :cell2 => "Cell 2" }

template = Amrita::TemplateFile.new("bah.templ")

template.expand(STDOUT, data1)
puts
template.expand(STDOUT, data2)

emschwar@wilson:/tmp$ ./amrita-test
<table>
<tr><td>Cell 1</td></tr>

</table>

<table>
<tr><td>Cell 1</td></tr>
<tr>testing</tr>
</table>
emschwar@wilson:/tmp$

Obviously, what I'm looking for in the second case is something like
<table>
<tr><td>Cell 1</td></tr>
<tr><td>Cell 2</td></tr>
</table>

I've been resorting to templating tricks like

<tr><td id="cell2" /></tr>

but that leaves an empty table row in there when there's no 'cell2',
which is not always what I want. In the particular application I'm
using it for, it's okay, but it's kinda ugly. How can I get there
from here? Or can I?

Hello,

I know with Amrita, if you pass nil as the data for a template
element, it doesn't get printed. What I'm interested in is in
conditional container elements, such as <span> or <tr>, that print
their templated content when enabled. See my test below:

emschwar@wilson:/tmp$ cat bah.templ
<table>
<tr><td id="cell1" />/></tr>
<tr id="row2"><td id="cell2" /></tr>
</table>

Notice that cell2 is a child of row2.
Now try using this data hash:

#!/usr/bin/ruby
require 'amrita/template'

data3 = {
   :cell1 => "Cell 1",
   :row2 => {
     :cell2 => "Cell 2"
   }
}

template = Amrita::TemplateFile.new("bah.templ")

template.expand(STDOUT, data3)

Obviously, what I'm looking for in the second case is something like
<table>
<tr><td>Cell 1</td></tr>
<tr><td>Cell 2</td></tr>
</table>

The result of data3 should be what you want.
I hope this makes sense.

Best,
Zev

···

On Tue, 22 Jun 2004 06:33:14 +0900, Eric Schwartz <emschwar@pobox.com> wrote:

Aredridel <aredridel@nbtsc.org> writes:

<tr><td><span amrita:id='cell2'>Cell 2</span></td></tr>

Right, but that still leaves the extra <tr> in there. I want to have
the <tr> show up when there is content for 'cell2', but not when there
isn't any.

-=Eric

···

--
Come to think of it, there are already a million monkeys on a million
typewriters, and Usenet is NOTHING like Shakespeare.
    -- Blair Houghton.

"Zev Blut" <rubyzbibd@ubit.com> writes:

data3 = {
   :cell1 => "Cell 1",
   :row2 => {
     :cell2 => "Cell 2"
   }
}

This is very cool. I'll have to re-read the Amrita docs to see if I'm
just blind, or if this isn't there-- I'll see if I can't produce a
patch if this isn't documented.

The result of data3 should be what you want.
I hope this makes sense.

Tons of sense. Thanks, Zev!

-=Eric

···

--
Come to think of it, there are already a million monkeys on a million
typewriters, and Usenet is NOTHING like Shakespeare.
    -- Blair Houghton.