Не знаю, как закрыть переменную в файле MD

У меня проблема с моим проектом GitHub. Я пытаюсь получить его онлайн на trustworthy.netlify.com, но есть ошибка компоновки страницы:

У вашего сайта проблемы со сборкой: переменная {{a} в строке 50 в functions/node_modules/balance-match/README.md не была правильно закрыта с}}. Для получения дополнительной информации см. https://help.github.com/articles/page-build-failed-tag-not-properly-terminated/.

Я думал, что мог бы просто добавить "}}" после {a}, но это строка кода, на которую он ссылается:

If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `['{', 'a', '']` and `{a}}` will match `['', 'a', '}']`.

Я не знаю достаточно о языке разметки или GitHub, чтобы знать, куда добавить "}}", или даже если мне нужно, и я не хочу случайно вызывать огромные проблемы с моим сайтом. Что я должен делать?

1 ответ

Решение

Вы должны избежать синтаксиса шаблона с {% raw %} а также {% endraw %},

Jekyll пропускает вашу Markdown через систему шаблонов Liquid, прежде чем она будет проанализирована как Markdown. Это позволяет вам определять переменные в ваших документах, которые Liquid будет обменивать на контент. Теперь завершенный документ передается в анализатор Markdown для преобразования в HTML.

Хотя это полезно, когда вы хотите включить переменные в документ, это может раздражать, когда вы хотите включить шаблон, подобный синтаксису, в качестве примеров кода в Markdown. Легко предположить, что поскольку синтаксис шаблона находится в блоке кода или в диапазоне, он будет проигнорирован. Однако Liquid не знает синтаксиса Markdown и не может определить разницу между фактическими переменными шаблона и примерами кода.

В вашем конкретном случае Liquid выдает ошибку, утверждая, что {{a} должно быть {{a}}, Конечно, это не правильно. {{a} это просто пример кода в вашей уценке. Но Джекилл никогда не добирается до анализатора Markdown, потому что он зацикливается на том, что Liquid считает ошибкой синтаксиса шаблона. Следовательно, вам нужно использовать механизм экранирования Liquid, чтобы сообщить Liquid игнорировать примеры кода:

{% raw %}
If the `str` contains more `a` than `b` / there are unmatched pairs, 
the first match that was closed will be used. For example, `{{a}` 
will match `['{', 'a', '']` and `{a}}` will match `['', 'a', '}']`.
{% endraw %}

Заворачивая полный абзац в {% raw %} а также {% endraw %} теги, мы говорим Liquid игнорировать содержимое и передавать его без изменений. Liquid удалит необработанные теги, а анализатор Markdown получит нужный вам контент.

Другие вопросы по тегам