5.3 Other HTML Tags

Arbitrary HTML tags can access the templating engine by prefixing the tag with "al-". Attributes of the tag can then be selectively evaluated to derive their value:

For example:

<al-td colspanexpr="i.span()">
could produce
<td colspan="3">

In the following example:

<al-input name="abc.value" disabledbool="abc.isdisabled()">
If abc.isdisabled() evaluates as True, then the disabled attribute is emitted:
<input name="abc.value" disabled>
But if abc.isdisabled() evaluates as False, then the disabled attribute is suppressed entirely:
<input name="abc.value">

In the following example, we change the styling of alternate rows in a table:

>>> import albatross
>>> ctx = albatross.SimpleContext('.')
>>> ctx.locals.names = ['Alex', 'Fred', 'Guido', 'Martin', 'Raymond', 'Tim']
>>> albatross.Template(ctx, '<magic>', '''
... <table>
...  <al-for iter="i" expr="names">
...   <al-tr classexpr="['light', 'dark'][i.index() % 2]" whitespace>
...    <td><al-value expr="i.value()" /></td>
...   </al-tr>
...  </al-for>
... </table>
... ''').to_html(ctx)
>>> ctx.flush_content()
<table>
 <tr class="light">
   <td>Alex</td>
  </tr><tr class="dark">
   <td>Fred</td>
  </tr><tr class="light">
   <td>Guido</td>
  </tr><tr class="dark">
   <td>Martin</td>
  </tr><tr class="light">
   <td>Raymond</td>
  </tr><tr class="dark">
   <td>Tim</td>
  </tr></table>