Сохраняйте объекты HTML при разборе уценки

Я исчерпал свои исследования и перепробовал множество методов безрезультатно, и надеюсь, что упускаю из виду какое-то простое решение:

Я использую сайт Jekyll для создания файлов HTML для электронной почты, и мне нужно использовать объекты HTML для специальных символов (таких как тире и умные кавычки), чтобы избежать неправильной интерпретации символов (тип содержимого/кодировка иногда вырвано из заголовка электронной почты из-за сложностей, в которые я не буду вдаваться.)

Моя проблема заключается в том, что синтаксический анализ моего Markdown, по-видимому, преобразует все мои письменные объекты HTML в специальные символы при выводе в виде HTML, и я не могу избежать обычных методов. Когда я ввожу &rsquo; в уценку, чтобы создать правильную фигурную кавычку, она преобразуется в символ в моем HTML (вместо сохранения &rsquo; в моем HTML). Если я попытаюсь избежать его с помощью обратных галочек, он не будет конвертировать &rsquo в HTML, но поместит его в теги <code>, из-за чего он будет отображаться как &rsquo;, а не . Есть ли способ сохранить введенные объекты HTML для специальных символов или, что еще лучше, преобразовать специальные символы в объекты HTML (в HTML) при анализе?

Я использую анализатор уценки Kramdown с Jekyll. Я даже зашел так далеко, что безуспешно указал параметр entity_output в Kramdown на : as_input. Любая помощь высоко ценится!


person Drew Albinson    schedule 20.05.2016    source источник
comment
Возможно, что-то вроде htmlentities.rubyforge.org? (Может потребоваться небольшая корректировка, потому что все примеры, которые я вижу там или на странице github, конвертируют ‹ и ›, но я полагаю, это может быть отправной точкой.)   -  person CBroe    schedule 20.05.2016


Ответы (2)


Как говорится в документах:

    --entity-output ARG
     Defines how entities are output

     The possible values are :as_input (entities are output in the same
     form as found in the input), :numeric (entities are output in numeric
     form), :symbolic (entities are output in symbolic form if possible) or
     :as_char (entities are output as characters if possible, only available
     on Ruby 1.9).

     Default: :as_char
     Used by: HTML converter, kramdown converter

Итак, давайте попробуем эти варианты:

$ kramdown --version
1.11.1 
$ kramdown
&lsquo;foo&rsquo;
<p>‘foo’</p>
$ kramdown --entity-output=as_input
&lsquo;foo&rsquo;
<p>&lsquo;foo&rsquo;</p>
$ kramdown --entity-output=symbolic
&lsquo;foo&rsquo;
<p>&lsquo;foo&rsquo;</p>
$ kramdown --entity-output=numeric
&lsquo;foo&rsquo;
<p>&#8216;foo&#8217;</p>
$ kramdown --entity-output=as_char
&lsquo;foo&rsquo;
<p>‘foo’</p>
$ ruby --version
ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-linux]

Обратите внимание, что у меня Kramdown версии 1.11 и Ruby версии 1.9. если у вас более ранние версии, то все может работать неправильно.

person Waylan    schedule 20.05.2016
comment
Спасибо, попробуйте еще раз сегодня, параметры kramdown для вывода объекта, похоже, работают, как указано в документах. Возможно, это опечатка, большое спасибо за подтверждение того, что это правильный метод! - person Drew Albinson; 23.05.2016

В вашем _config.yml вы можете настроить kramdown, чтобы оставлять html-объекты в том виде, в каком они написаны в вашем коде, с помощью:

kramdown:
  entity_output: :as_input

См. документацию.

person David Jacquel    schedule 21.05.2016
comment
Спасибо, я думаю, что частью моей проблемы могло быть второе отсутствующее двоеточие. Ваше здоровье! - person Drew Albinson; 23.05.2016