buildOpenTagHTML method

String buildOpenTagHTML({
  1. bool openCloseTag = false,
  2. bool resolveDSX = false,
  3. DOMContext? domContext,
})

Implementation

String buildOpenTagHTML(
    {bool openCloseTag = false,
    bool resolveDSX = false,
    DOMContext? domContext}) {
  var html = '<$tag';

  if (hasAttributes) {
    var attributeId = _attributes!['id'];
    var attributeClass = _attributes!['class'];
    var attributeStyle = _attributes!['style'];

    html = DOMAttribute.append(html, ' ', attributeId,
        domContext: domContext, resolveDSX: resolveDSX);
    html = DOMAttribute.append(html, ' ', attributeClass,
        domContext: domContext, resolveDSX: resolveDSX);
    html = DOMAttribute.append(html, ' ', attributeStyle,
        domContext: domContext, resolveDSX: resolveDSX);

    var attributesNormal = _attributes!.values
        .where((v) => v.hasValue && !_isPriorityAttribute(v) && !v.isBoolean);

    for (var attr in attributesNormal) {
      html = DOMAttribute.append(html, ' ', attr,
          domContext: domContext, resolveDSX: resolveDSX);
    }

    var attributesBoolean = _attributes!.values
        .where((v) => v.hasValue && !_isPriorityAttribute(v) && v.isBoolean);

    for (var attr in attributesBoolean) {
      html = DOMAttribute.append(html, ' ', attr,
          domContext: domContext, resolveDSX: resolveDSX);
    }
  }

  if (_resolvedDSXEventAttributes != null) {
    for (var entry in _resolvedDSXEventAttributes!.entries) {
      var name = entry.key;
      var value = entry.value.toString();
      html += ' $name="$value"';
    }
  }

  html += openCloseTag ? '/>' : '>';

  return html;
}