When this attribute is not present all of the directly enclosed <al-option> (5.2.4) tags are processed to generate the enclosed <option> tags.
If an item in the optionexpr sequence is not a tuple, it is converted to string and then compared with the comparison value derived from the name (5.2.3.4) attribute.
To support multiple selected <option> tags the comparison value must be either a list or tuple.
For example:
>>> import albatross >>> ctx = albatross.SimpleContext('.') >>> ctx.locals.sel1 = 3 >>> ctx.locals.sel2 = (2,3) >>> albatross.Template(ctx, '<magic>', ''' ... <al-select name="sel1" optionexpr="range(5)" whitespace/> ... <al-select name="sel2" optionexpr="range(5)" multiple whitespace/> ... ''').to_html(ctx) >>> ctx.flush_content() <select name="sel1"><option>0</option> <option>1</option> <option>2</option> <option selected>3</option> <option>4</option> </select> <select multiple name="sel2"><option>0</option> <option>1</option> <option selected>2</option> <option selected>3</option> <option>4</option> </select>
If an item in the optionexpr sequence is a tuple it must contain two values. The first value is used to specify the value attribute of the generated <option> tag and the second value provides the <option> tag content.
For example:
>>> import albatross >>> ctx = albatross.SimpleContext('.') >>> ctx.locals.menu = [(1, 'Spam'), (2, 'Eggs'), (3, 'Bacon')] >>> ctx.locals.sel = 1 >>> albatross.Template(ctx, '<magic>', ''' ... <al-select name="sel" optionexpr="menu" whitespace/> ... ''').to_html(ctx) >>> ctx.flush_content() <select name="sel"><option selected value="1">Spam</option> <option value="2">Eggs</option> <option value="3">Bacon</option> </select>
All values generated by the optionexpr method are escaped to make all &, <, >, and " characters safe.