renderSwitch method
void
renderSwitch(
- Element element,
- CodeBuffer buffer,
- SymbolTable scope,
- bool html5,
)
Implementation
void renderSwitch(
Element element, CodeBuffer buffer, SymbolTable scope, bool html5) {
var value = element.attributes
.firstWhereOrNull((a) => a.name == 'value')
?.value
?.compute(scope);
var cases = element.children
.whereType<Element>()
.where((c) => c.tagName.name == 'case');
for (var child in cases) {
var comparison = child.attributes
.firstWhereOrNull((a) => a.name == 'value')
?.value
?.compute(scope);
if (comparison == value) {
for (var i = 0; i < child.children.length; i++) {
var c = child.children.elementAt(i);
renderElementChild(
element, c, buffer, scope, html5, i, child.children.length);
}
return;
}
}
var defaultCase = element.children.firstWhereOrNull(
(c) => c is Element && c.tagName.name == 'default') as Element?;
if (defaultCase != null) {
for (var i = 0; i < defaultCase.children.length; i++) {
var child = defaultCase.children.elementAt(i);
renderElementChild(element, child, buffer, scope, html5, i,
defaultCase.children.length);
}
}
}