Втеча з подвійних фігурних дужок всередині блоку коду розмітки в Джекіллі


86

Я використовую Jekyll для створення документаційного сайту, де я намагаюся задокументувати якийсь код, що містить синтаксис, схожий на рулі. Наприклад {{foo}}. Проблема в тому, що Jekyll використовує рідкі мітки, і що б я не робив, мої подвійні кучері вириваються процесором рідини.

До речі, я використовую kramdown як процесор націнки.

Ось те, що я спробував:

{% highlight html linenos %}
  Hello, my name is {{name}}.
{% endhighlight %}

Цей повністю видаляє розділ {{name}}, оскільки вважає, що це посилання на змінну рідини.

Я також спробував це:

{% highlight html linenos %}
  Hello, my name is \{\{name\}\}.
{% endhighlight %}

У цьому випадку я намагаюся уникнути фігурних дужок, але результат полягає в тому, що косі риси відображаються на сторінці.

Я навіть спробував це:

{% highlight html linenos %}
  Hello, my name is <span>{</span>{name}}.
{% endhighlight %}

Слід визнати, що цей був досить німий. У цьому випадку, оскільки я вказав синтаксис як html (яким він повинен бути), тег span відображається на сторінці.

То як у світі я можу це вирішити?

Відповіді:


181

Ви шукаєте {% raw %}мітку.

{% raw %}
Hello, my name is {{name}}.
{% endraw %}

6
А-а-а-а! Ти мій новий найкращий друг.
rescuecreative

Дякую, це саме те, що я хочу.
wukong

Дякую ... це зводило мене з розуму.
learningMachine

Що робити, якщо код, який ви хочете видалити, {% raw %} {{...}} {% endraw %}такий, який можна знайти у дописі в блозі, де обговорюється саме ця тема?
зоряна зірка

3
@starfry: Смішно, про що слід запитати ... blog.slaks.net/2013-06-10/jekyll-endraw-in-code
SLaks

33

Ви можете використовувати, {% raw %}щоб забезпечити незмінний зміст Jekyll:

{% raw %}
This is inserted literally: {{foo}}
{% endraw %}

Однак зауважте, що це не блок коду . Вам буде потрібно додаткове форматування коду, щоб ваш вміст відображався як код:

{% raw %}
    I'm a code block, because I'm indented by 4 spaces
{% endraw %}
{% raw %}
```handlebars
I'm a code block that contains {{handlebars}}
with highlighting.
```
{% endraw %}

Дякую за це доповнення. У підсумку я зробив щось трохи потворніше, ніж це, як {% raw %}{{ foo }}{% endraw %}для кожного випадку, тому я подивлюсь, що ви зробили тут.
rescuecreative

Це більш гнучке рішення, оскільки воно дозволяє зберегти блок коду та його синтаксис.
Kiddo

19

З jekyll код:

{% highlight html%}
{% raw %}
     <h2> {{ user.name.first | uppercase }}</h2>
     <p> {{ user.email }}</p>
{% endraw %}
{% endhighlight %}

Це точне рішення. Дякую!
Джерад Рутнам

Варто зазначити: вищезазначене працює, також із підсвічуванням Rouge. Однак сировинка, однак, не працює, якщо для підсвічування коду використовується синтаксис (три провідні зворотні кнопки, наприклад, `` html ...)
Френк Нокке,

5

Для подальших довідок: використання простої {% raw %}та {% endraw %}є лише другим найкращим рішенням, оскільки вони показані, якщо ви шукаєте Націнку на звичайному github.com.

Кращий спосіб це поставити {% raw %}і {% endraw %}в коментарях HTML:

<!-- {% raw %} -->
something with curlky brackets like { this } and { that }
<!-- {% endraw %} -->

Завдяки коментарям HTML, Github розглядає їх як коментар. На сторінках Github сирі теги запобігають синтаксичному аналізу фігурних дужок між тегами.


2

Це працює в jekyll :

{%raw%}{{thing}}{%endraw%}

FYI, я включив потрійну зворотну лапку, щоб продемонструвати, що блок коду в Jekyll буде працювати. Не було призначено створювати блок відповідей у ​​відповіді :)
Ліза Сінклер,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.