buildOpenTagHTML method

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

Implementation

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

  final attributes = _attributes;
  if (attributes != null && attributes.isNotEmpty) {
    var attributeId = attributes['id'];
    var attributeClass = attributes['class'];
    var attributeStyle = attributes['style'];

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

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

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

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

    for (var attr in attributesBoolean) {
      DOMAttribute.appendTo(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.write(' ');
      html.write(name);
      html.write('="');
      html.write(value);
      html.write('"');
    }
  }

  html.write(openCloseTag ? '/>' : '>');

  return html.toString();
}