Вопрос

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

Ну, это не совсем работает для меня в Markdownsharp.

Этот пример работает должным образом, когда у вас есть дополнительный разрыв линии сразу после "ABC" ...enter image description here

Но когда этого разрыва линии нет, я думаю, что его все равно должны быть Htmlencodied, но этого не происходит здесь ...enter image description here

За кулисами отображаемая наценка происходит от iframe. И это код за этим ...

<% 
var md = new MarkdownSharp.Markdown();
%>
<%= md.Transform(Request.Form[0]) %>

Конечно, я что -то упускаю. О, и я использую v1.13 (последняя версия на момент написания статьи).


Изменить (это тест для реализации Stackoverflow)

азбука

это не должно быть красным
Это было полезно?

Решение 2

Поскольку стало ясно, что реализация StackOverflow содержит довольно много настроек, которые могут потребовать, чтобы проверить и выяснить, я решил пойти в другом направлении.

Я создал свой собственный упрощенный язык разметки, который является подмножеством уценки. Проект с открытым исходным кодом в http://ultralight.codeplex.com/ и вы можете увидеть рабочий пример на http://www.bucketsoft.com/ultralight/

Проект представляет собой полное решение ASP.NET MVC с редактором JavaScript. И в отличие от Markdownsharp, безопасный HTML гарантированно. Паритор JavaScript используется как на стороне клиента, так и на стороне сервера, чтобы гарантировать последовательную разметку (особая благодаря благодаря Юрский компилятор JavaScript) Это прекрасная вещь, чтобы сохранить только одну кодовую базу для этого анализатора.

Хотя проект все еще находится в бета -версии, я уже использую его на своем собственном сайте, и он, кажется, до сих пор работает хорошо.

Другие советы

Для тех, кто не хочет использовать индивидуальное решение Стива Уортима, я представил проблему и предлагаемое исправление для парней MarkdownSharp: http://code.google.com/p/markdownsharp/issues/detail?id=43

Если вы загрузите мой файл прикрепленного markdown.cs, вы найдете новую опцию, которую вы можете установить. Это остановит MarkdownSharp от повторного кодирования текста в блоках кода.

Просто не забудьте HTML кодировать ваш ввод, прежде чем передать его в уценку, а не после.

Другое решение-для HTML-тегов белого списка, как переполнение стека. Вы сделаете это после того, как передадите свой контент на уменную марку.

Смотрите это для получения дополнительной информации: http://www.codetunnel.com/blog/post/24/mardownsharp-and-coded-html

Может я не понимаю? Если вы начинаете новый кодовый блок в Markdown, во всех его сортах вам нужен двойной LineBreak и четырехместное вдательство-ни один из новичков не будет делать ни в одном из рендереров, которые мне придется передать.

abc -- Here comes a code block:

    <div style="background-color: red"> This is code</div>

Уход:

ABC - вот кодовый блок:

<div style="background-color: red"> This is code</div>

Из того, что вы говорите, кажется, что Markdownsharp хорошо справляется с этим правилом, так что только с одним новым линином (но отступом):

 abc -- Here comes a code block:
     <div style="background-color: red"> This should be code</div>

Мы получаем беспорядок, а не кодовый блок:

ABC - вот кодовый блок: это должен быть код

Я предполагаю, что Stackoverflow снимает <div> Теги, потому что они думают, что комментарии не должны иметь подразделения и такие вещи. (?) (В целом они должны сделать много других обработок, не так ли, например, чтобы получить синтаксис и так далее?)

РЕДАКТИРОВАТЬ: Я думаю, что люди ожидают неверной вещи в реализации. Например, как я говорю ниже, Нет такой вещи, как «недействительная отметка». Анкет Это не язык программирования или что -то вроде одного. Я подтвердил, что все три реализации отметки, которые я имею в командной строке, безразлично «преобразовать» файлы случайных .js и .c, или те, которые вставлены в иное разумное отметки, а также интерполированные zip -файлы и другие глупости - в действительный HTML, который Браузеры вообще не возражают, хотя и царапины курицы. Если вы хотите что-то исключить, например, в вики-программе, вы, конечно, делаете что-то дальше, как это делают большинство вики-программ, занимающихся уценкой.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top