from static method
Implementation
static DOMAttribute? from(String? name, Object? value) {
name = normalizeName(name);
if (name == null) return null;
if (value is String && DOMTemplate.possiblyATemplate(value)) {
var template = DOMTemplate.parse(value);
if (!template.hasOnlyContent) {
return DOMAttribute(name, DOMAttributeValueTemplate(value));
}
}
if (name == 'style') {
return DOMAttribute(name, DOMAttributeValueCSS(value));
}
var delimiter = _attributesValueAsListDelimiters[name];
if (delimiter != null) {
var delimiterPattern = _attributesValueAsListDelimitersPatterns[name]!;
var attrSet = _attributesValueAsSet.contains(name);
if (attrSet) {
return DOMAttribute(
name,
DOMAttributeValueSet(value, delimiter, delimiterPattern),
);
} else {
return DOMAttribute(
name,
DOMAttributeValueList(value, delimiter, delimiterPattern),
);
}
} else {
var attrBoolean = _attributesValueAsBoolean.contains(name);
if (attrBoolean) {
if (value != null) {
// A keyword is kept as the value: `hidden="until-found"`.
var keyword = booleanAttributeKeyword(name, value);
if (keyword != null) {
return DOMAttribute(name, DOMAttributeValueString(keyword));
}
// `<input checked="">` and `<input checked="checked">` are true:
// see `parseBooleanValue`.
return DOMAttribute(
name,
DOMAttributeValueBoolean(value, attrName: name),
);
}
return null;
} else {
return DOMAttribute(name, DOMAttributeValueString(value));
}
}
}