declarationsFor method
Implementation
Map<String, String> declarationsFor(List<UEpubNode> chain) {
if (chain.isEmpty) return const <String, String>{};
final List<UEpubRule> matched = <UEpubRule>[];
for (final UEpubRule rule in rules) {
if (_matches(rule.selector, chain)) matched.add(rule);
}
matched.sort((UEpubRule a, UEpubRule b) => a.specificity.compareTo(b.specificity));
final Map<String, String> out = <String, String>{};
for (final UEpubRule rule in matched) {
out.addAll(rule.declarations);
}
final String? inline = chain.last.attributes["style"];
if (inline != null && inline.isNotEmpty) out.addAll(_declarations(inline));
return out;
}