Публикация кода или предварительно отформатированного текста

:bookmark: Это руководство объясняет, как публиковать код или предварительно отформатированный текст в Discourse, используя форматы Markdown, BBCode и HTML.

:person_raising_hand: Требуемый уровень пользователя: Все пользователи

Есть строка кода, которую нужно поделиться? Возможно, вам нужно поделиться журналом ошибок с вашего сайта? Чтение неформатированного кода может быть сложным, особенно если код зависит от пробелов или содержит специальные символы, которые Discourse преобразует.

Краткое содержание

В этом руководстве вы узнаете:

  • Как форматировать встроенный код.
  • Как форматировать целые строки кода.
  • Как форматировать блоки кода.
  • Как использовать BBCode и HTML для форматирования кода.
  • Как отключить автоматическое стилизование кода.

Форматирование встроенного кода

Чтобы отформатировать конкретный участок текста, используйте по одному обратному апострофу с каждой стороны кода. Это можно сделать внутри обычного текста или когда код находится на отдельной строке. Встроенное форматирование не применяет автоматическое форматирование кода (см. ниже) и применяет «стиль кода» только к тексту между обратными апострофами.

Пример 1:

Ввод:

Это строка кода

Результат:

Это строка кода

Пример 2:

Ввод:

Вот текст с кусочком кода внутри!

Результат:

Вот текст с кусочком кода внутри!

Форматирование целой строки кода

Чтобы отформатировать целую строку, добавьте 4 пробела в начале строки. Весь текст до следующей разрыв строки будет считаться кодом.

Пример:

Ввод:

    Весь текст после 4 пробелов будет отформатирован.

Результат:

Весь текст после 4 пробелов будет отформатирован.

Форматирование блока кода

Хотя вы можете использовать метод с 4 пробелами для создания нескольких строк кода, это может быть утомительно, особенно если вы копируете и вставляете текст и вам нужно вводить 4 пробела на нескольких строках.

Вместо этого используйте 3 обратных апострофа (```) на отдельной строке над и под вашим кодом. Убедитесь, что на строках с обратными апострофами нет пробелов, иначе это не сработает.

Пример:

Ввод:

``` 
public class CodeFormatting {
    public static void main(String[] args) {
        System.out.println("Теперь я могу форматировать код!");
    }
}
```

Результат:

public class CodeFormatting {
    public static void main(String[] args) {
        System.out.println("Теперь я могу форматировать код!");
    }
}

BBCode и HTML

Помимо Markdown, Discourse поддерживает подмножество BBCode и HTML.

Для HTML используйте теги <pre> и <code>:

<pre><code>
public class CodeFormatting {
    public static void main(String[] args) {
        System.out.println("Теперь я могу форматировать код!");
    }
}
</code></pre>

Для BBCode используйте тег [code]:

[code]
public class CodeFormatting {
    public static void main(String[] args) {
        System.out.println("Теперь я могу форматировать код!");
    }
[/code]

Указание языка программирования

По умолчанию Discourse определяет язык вашего кода и применяет соответствующее стилизование.

Чтобы вручную указать язык программирования для блока кода, введите название языка сразу после первой группы обратных апострофов:

``` ваш_язык
# Ваш код здесь

Пример

Чтобы указать Ruby:

Ввод:

``` ruby
3.times do |stuff|
    stuff.do
end
```

Результат:

3.times do |stuff|
    stuff.do
end

Язык должен быть одним из подсвечиваемых языков, настроенных для синтаксического подсветки на вашем сайте. Стандартный список можно найти в config/site_settings.yml, выполнив поиск по highlighted_languages.

Вы также можете установить язык кода по умолчанию с помощью настройки сайта default code lang.

Отключение подсветки

Если вы хотите предотвратить любую синтаксическую подсветку, вы можете использовать text в качестве языка:

Пример

Ввод:

``` text
Ваш текст, который НЕ нужно подсвечивать

Результат:

Ваш текст, который НЕ нужно подсвечивать

Лучшие практики

  • Всегда заключайте встроенный код в одиночные обратные апострофы для ясности.
  • Используйте форматирование блока кода для обмена большими фрагментами кода.
  • Избегайте автоматического стилизации кода при обмене текстом или журналами, которые не выигрывают от стилизации, специфичной для языка.
  • Указывайте язык, если автоматическое определение не распознает ваш код правильно.

Дополнительные ресурсы

15 лайков

A fixed, and safer, link for the default list of enabled languages for syntax highlighting is https://github.com/discourse/discourse/blob/c4de8565eceeadda8f2a800226a02d0c40752ae6/config/site_settings.yml#L1086-L1087

3 posts were split to a new topic: Unable to post topic with code block