declarationsFor method

Map<String, String> declarationsFor(
  1. List<UEpubNode> chain
)

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