Files
PiliPlus/lib/utils/em.dart
bggRGjQaUbCoE a2ef4e6f84 chore: clean up
opt: pages

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
2025-04-20 18:07:48 +08:00

35 lines
885 B
Dart

import 'package:html/parser.dart' show parse;
class Em {
static final _exp = RegExp('<[^>]*>([^<]*)</[^>]*>');
static String regCate(String origin) {
Iterable<Match> matches = _exp.allMatches(origin);
return matches.lastOrNull?.group(1) ?? origin;
}
static List<Map<String, String>> regTitle(String origin) {
List<Map<String, String>> res = [];
origin.splitMapJoin(
_exp,
onMatch: (Match match) {
String matchStr = match[0]!;
res.add({'type': 'em', 'text': regCate(matchStr)});
return matchStr;
},
onNonMatch: (String str) {
if (str != '') {
str = decodeHtmlEntities(str);
res.add({'type': 'text', 'text': str});
}
return str;
},
);
return res;
}
static String decodeHtmlEntities(String title) {
return parse(title).body?.text ?? title;
}
}