44 lines
1.1 KiB
Dart
44 lines
1.1 KiB
Dart
class Em {
|
|
static regCate(String origin) {
|
|
String str = origin;
|
|
RegExp exp = RegExp('<[^>]*>([^<]*)</[^>]*>');
|
|
Iterable<Match> matches = exp.allMatches(origin);
|
|
for (Match match in matches) {
|
|
str = match.group(1)!;
|
|
}
|
|
return str;
|
|
}
|
|
|
|
static regTitle(String origin) {
|
|
RegExp exp = RegExp('<[^>]*>([^<]*)</[^>]*>');
|
|
List res = [];
|
|
origin.splitMapJoin(exp, onMatch: (Match match) {
|
|
String matchStr = match[0]!;
|
|
Map map = {'type': 'em', 'text': regCate(matchStr)};
|
|
res.add(map);
|
|
return regCate(matchStr);
|
|
}, onNonMatch: (String str) {
|
|
if (str != '') {
|
|
str = decodeHtmlEntities(str);
|
|
Map map = {'type': 'text', 'text': str};
|
|
res.add(map);
|
|
}
|
|
return str;
|
|
});
|
|
return res;
|
|
}
|
|
|
|
static String decodeHtmlEntities(String title) {
|
|
return title
|
|
.replaceAll('<', '<')
|
|
.replaceAll('>', '>')
|
|
.replaceAll('"', '"')
|
|
.replaceAll(''', "'")
|
|
.replaceAll('"', '"')
|
|
.replaceAll(''', "'")
|
|
.replaceAll(' ', " ")
|
|
.replaceAll('&', "&")
|
|
.replaceAll(''', "'");
|
|
}
|
|
}
|