Кодблок Эмиттер реализует Блок Эмиттер
public class CodeBlockEmitter implements BlockEmitter {
private static void append(StringBuilder out, List<String> lines) {
out.append("<pre class=\"pre_no_hl\">");
for (final String l : lines) {
Utils.escapedAdd(out, l);
out.append('\n');
}
out.append("</pre>");
}
@Override
public void emitBlock(StringBuilder out, List<String> lines, String meta) {
if (Strings.isEmpty(meta)) {
append(out, lines);
} else {
try {
// Utils#highlight(...) is not included with txtmark, it's sole purpose
// is to show what the meta can be used for
out.append(Utils.highlight(lines, meta));
out.append('\n');
} catch (final IOException e) {
// Ignore or do something, still, pump out the lines
append(out, lines);
}
}
}
}
Можно затем установить BlockEmitter в txtmark Configuration, используя Configuration.Builder#setCodeBlockEmitter(BlockEmitter emitter).
Txtmark проходит все тесты внутри MarkdownTest_1.0_2007-05-09, кроме двух:
Images.text
Не удаётся, потому что Txtmark не создаёт пустые атрибуты title для изображений. (IMHO: Изображения... ОК).
Literal quotes in titles.text
Что за чёрт... этот тест будет продолжать давать сбой. Извините, но использование неэкранированных кавычек в заголовке, который должен быть заключён в кавычки, неприемлемо для меня;)
Поменяйте:
Foo bar. [bar]: /url/ "Title with 'quotes' inside"
на:
Foo bar. [bar]: /url/ "Title with "quotes" inside"
и Txtmark выдаст правильный результат. (IMHO: Литеральные кавычки в заголовках... ОК).
Txtmark не создает пустые атрибуты title в тегах ссылок и изображений.
Неэкранированные кавычки в названиях ссылок, начинающихся с кавычек, не распознаются и приводят к неожиданному поведению.
Из-за другого подхода к анализу списков некоторые вещи интерпретируются по-разному:
Цитата
будет выглядеть так при обработке с помощью Markdown:
Цитата
а так при использовании Txtmark:
Цитата
Ещё один пример:
при обработке с Markdown будет выглядеть как:
а при использовании Txtmark — как:
Список экранируемых символов:
\ [ ] ( ) { } # " ' . < > + - _ ! ` ^
Замечания: Эти тесты слишком старые, чтобы иметь какую-либо ценность. Тем не менее я оставляю их здесь для справки.
На основе этого набора тестов (http://henkelmann.eu/2011/01/10/performance_comparison_of_markdown_processor_for_the_jvm).
Выдержка из оригинального поста, касающегося этого набора тестов:
Большинство этих тестов, конечно, нереалистичны: кто будет писать текст, где каждое слово является ссылкой? Тем не менее они служат важной цели: они позволяют разработчику определить, в каких частях парсера есть больше всего возможностей для улучшения. Кроме того, это объясняет, почему определённые тексты могут отображаться некорректно. Перевод текста:
Гораздо быстрее на одном
процессоре, чем на другом.
Система тестирования:
<Таблица> <Строка><Столбец>Тест</Столбец><colspan="2">Actuarius<colspan="2">PegDown<colspan="2">Knockoff<colspan="2">Txtmark</Строка> <Строка>
Первый запуск (мс)Второй запуск (мс)Первый запуск (мс)Второй запуск (мс)Первый запуск (мс)Второй запуск (мс)Первый запуск (мс)Второй запуск (мс)</Строка> <Строка>Простые абзацы11275771273103774040015764</Строка> <Строка>Каждое слово выделено156210011523151313982132215446</Строка> <Строка>Каждое слово жирным112599711151114954396474441</Строка> <Строка>Каждое слово в виде кода38227710581052911690745139</Строка> <Строка>Каждое слово — быстрая ссылка225716005375313980341010955</Строка> <Строка>Каждое слово состоит из специальных символов XML4045427029853044312377778775</Строка> <Строка>Каждое слово заключено в ручные HTML-теги33342919901896386337367362</Строка> <Строка>Каждая строка с ручным переносом51058814451440152711305656</Строка> <Строка>Каждое слово с полной ссылкой4522461045996188418198655</Строка> <Строка>Каждое слово с полным изображением26815011401132198519083836</Строка> <Строка>Каждое слово со ссылкой на источник98479082189561871912113611541615251380</Строка> <Строка>Каждый блок — цитата445206131213014784575045</Строка> <Строка>Каждый блок — кодовый блок70873733761611756022</Строка> <Строка>Каждый блок — список920912172017256226515555</Строка> <Строка>Все тесты вместе32812885518451961013010460206196</Строка> </Таблица>[Markdown] является авторским правом (C) 2004 Джона Грубера.
[SmartyPants] является авторским правом (C) 2003 Джона Грубера.
[Actuarius] является авторским правом (C) 2010 Кристофа Хенкельманна.
[Knockoff] является авторским правом (C) 2009–2011 Тристана Юричека.
[PegDown] является авторским правом (C) 2010 Матиаса Дёница.
[PHP Markdown & Extra] является авторским правом (C) 2009 Мишеля Фортина.
[Синтаксис Markdown]: http://daringfireball.net/projects/markdown/syntax/ «daringfireball.net».
[Markdown]: http://daringfireball.net/projects/markdown/.
[SmartyPants]: http://daringfireball.net/projects/smartypants/.
[Actuarius]: http://henkelmann.eu/projects/actuarius/.
[Knockoff]: http://tristanhunt.com/projects/knockoff/.
[PegDown]: https://github.com/sirthias/pegdown/.
[PHP Markdown & Extra]: http://michelf.com/projects/php-markdown/.
[repo]: https://github.com/rjeschke/txtmark «Txtmark на GitHub.com».
[tar]: https://github.com/rjeschke/txtmark/tarball/master «ветка: master».
[zip]: https://github.com/rjeschke/txtmark/zipball/master «ветка: master».
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )