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!);
    }
  }
}