mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-07-17 18:49:55 +08:00

We were only supporting English, and even if we use the regexp \w, that seems to only work for English and not all languages.
52 lines
1.1 KiB
Dart
52 lines
1.1 KiB
Dart
import 'dart:convert';
|
|
import 'dart:core';
|
|
|
|
String stripMarkdownFormatting(String markdown) {
|
|
var output = StringBuffer();
|
|
|
|
var lines = LineSplitter.split(markdown);
|
|
for (var line in lines) {
|
|
line = line.trim();
|
|
if (line.startsWith('#')) {
|
|
line = line.replaceAll('#', '');
|
|
}
|
|
if (line.isEmpty) {
|
|
continue;
|
|
}
|
|
line = replaceMarkdownChars(line);
|
|
|
|
output.write(line.trim());
|
|
output.write(' ');
|
|
}
|
|
|
|
return output.toString().trimRight();
|
|
}
|
|
|
|
String replaceMarkdownChars(String line) {
|
|
line = line.replaceFirst('- [ ]', '☐');
|
|
line = line.replaceFirst('- [x]', '☑');
|
|
line = line.replaceFirst('- [X]', '☑');
|
|
|
|
line = replaceListChar(line, '*');
|
|
line = replaceListChar(line, '-');
|
|
line = replaceListChar(line, '+');
|
|
|
|
return line;
|
|
}
|
|
|
|
String replaceListChar(String line, String char) {
|
|
const String bullet = '•';
|
|
|
|
var starPos = line.indexOf(char);
|
|
if (starPos == 0) {
|
|
line = line.replaceFirst(char, bullet);
|
|
} else if (starPos != -1) {
|
|
var beforeStar = line.substring(0, starPos);
|
|
if (beforeStar.trim().isEmpty) {
|
|
line = line.replaceFirst(char, bullet, starPos);
|
|
}
|
|
}
|
|
|
|
return line;
|
|
}
|