Подсветка синтаксиса Javascript, которая прекрасно работает с Markdown - PullRequest
4 голосов
/ 18 декабря 2010

Я посмотрел на несколько программ Javascript, чтобы добавить подсветку синтаксиса к блокам кода на странице, но все они, которые я нашел, требуют установки атрибута в блоке кода, чтобы сказать ему, какой язык используется. Я генерирую HTML с помощью Markdown, поэтому у меня нет возможности установить эти атрибуты, есть ли такие, которые будут делать это автоматически и не будут нуждаться в установке атрибута?

Единственный способ, которым я могу думать об этой работе, - это линия Шебанга;

#!/usr/bin/ruby
def foo(bar)
    bar
end

И он будет знать, что это Руби, и, возможно, даже не отобразит строку Шебанга (наличие шебанга для одного или двух фрагментов строки утомит).

Мне не понадобится делать это для каких-то очень непонятных языков, но было бы здорово, если бы я мог легко писать новые определения.

Спасибо.

Ответы [ 2 ]

6 голосов
/ 18 декабря 2010

Google Prettifier должен сделать эту работу.StackOverflow также использует его (с разметкой, сгенерированной Markdown).Он определяет язык автоматически.

2 голосов
/ 19 декабря 2010

Насколько я понимаю, спецификация Markdown допускает наличие фактической разметки в качестве запасного варианта:

Для любой разметки, не охватываемой синтаксисом Markdown, вы просто используетеСам HTML.Нет необходимости вводить предисловие или разделять его, чтобы указать, что вы переходите с Markdown на HTML;вы просто используете теги.

Единственными ограничениями являются то, что элементы HTML уровня блока - например,

,

Так что, если у вас есть подсветка синтаксиса, вам действительно это не нравится-детект, вы можете просто бросить буквальный блок <code> с соответствующим атрибутом в ваш Markdown.Я не думаю, что это особенно нарушает цели Markdown, ... это довольно простой и читаемый индикатор.

Также может быть не так сложно развернуть собственный сценарий, который выполняется первым после того, как DOM готов, находит блоки кода и вставляет в них соответствующие атрибуты для подсветки синтаксиса по вашему выбору, в зависимости от нескольких эвристик, которыевы разрабатываете для их содержания, но если есть библиотека, которая уже делает это, очевидно, что это имеет некоторые преимущества.:)

...