setAttributes method

  1. @override
void setAttributes(
  1. DOMElement domElement,
  2. Node element,
  3. DOMTreeMap<Node> treeMap, {
  4. bool preserveClass = false,
  5. bool preserveStyle = false,
})
override

Implementation

@override
void setAttributes(
    DOMElement domElement, Node element, DOMTreeMap<Node> treeMap,
    {bool preserveClass = false, bool preserveStyle = false}) {
  if (!element.isA<Element>()) return;

  var element2 = element as Element;

  List<String>? attrsKeys;
  List<String?>? attrsValues;

  for (var attrName in domElement.attributesNames) {
    var attrVal = resolveAttributeValue(
        domElement, element, attrName, treeMap,
        preserveClass: preserveClass, preserveStyle: preserveStyle);

    var set = _setElementAttributeSpecial(element2, attrName, attrVal);
    if (!set) {
      List<String> keys;
      List<String?> values;
      if (attrsKeys == null) {
        keys = attrsKeys = [];
        values = attrsValues = [];
      } else {
        keys = attrsKeys;
        values = attrsValues!;
      }

      keys.add(attrName);
      values.add(attrVal);
    }
  }

  if (attrsKeys != null) {
    if (attrsKeys.length == 1) {
      _setElementAttribute(element, attrsKeys[0], attrsValues![0]);
    } else {
      setAttributesFromKeyValueLists(element2, attrsKeys, attrsValues!);
    }
  }
}