Здравствуйте, Abyx, Вы писали:
A>круто, но чем плохи существующие — markdown, textile, etc
textile не очень удобен, а в markdown много чего не хватает. Вот тут тема есть — http://rsdn.ru/forum/rsdn/4862086.1, в ней в том числе и этот вопрос обсуждался. Этот документ, собственно, на ее основе создан, я его просто перетащил сюда с битбакета, чтобы можно было обсуждать, а заодно и wiki потестировать.
... << RSDN@Home 1.2.0 alpha 5 rev. 100 on Windows 8 6.2.9200.0>>
AVK>textile не очень удобен, а в markdown много чего не хватает. Вот тут тема есть — http://rsdn.ru/forum/rsdn/4862086.1, в ней в том числе и этот вопрос обсуждался. Этот документ, собственно, на ее основе создан, я его просто перетащил сюда с битбакета, чтобы можно было обсуждать, а заодно и wiki потестировать.
Для markdown есть несколько расширений. Плюс никто не мешает написать свой.
Они много где используются и поддерживаются.
Десятилетие обкатки.
А единый устраивающий всех язык разметки всё равно не создать.
Здравствуйте, A-Myth, Вы писали:
AM>Для markdown есть несколько расширений. Плюс никто не мешает написать свой.
Ну а если писать свой, то тогда в чем вопрос?
AM>Они много где используются и поддерживаются.
Там в топике есть ссылки, и markdown далеко не на первом месте по популярности.
AM>Десятилетие обкатки.
Десятилетие это сильно сказано. Я точно помню что в 2009 это был еще довольно малоизвестный формат. Опять же, bbcode в разы старше, если уж на обкатку ориентироваться.
AM>А единый устраивающий всех язык разметки всё равно не создать.
Но можно создать такой, который устраивает максимальное количество. Да и не в устраиваемости дело, а в удобстве. Большая часть разметок создана хаотично, люди явно не везде тщательно задумывались об удобстве. А у нас еще и специфика двуязычной клавиатуры накладывается.
... << RSDN@Home 1.2.0 alpha 5 rev. 100 on Windows 8 6.2.9200.0>>
AM>>Для markdown есть несколько расширений. Плюс никто не мешает написать свой. AVK>Ну а если писать свой, то тогда в чем вопрос?
Имел в виду — "своё". Расширение. А основную базу оставить от markdown.
По поводу популярности: "Sites such as GitHub, reddit, Diaspora, Stack Exchange, OpenStreetMap, and SourceForge use variants of Markdown to facilitate discussion between users"
Тут, конечно, дело вкуса и свободного времени, если есть возможность, то создавайте и обкатывайте — "больше языков хороших и разных".
Здравствуйте, A-Myth, Вы писали:
AM>Имел в виду — "своё". Расширение. А основную базу оставить от markdown.
База в обсуждаемом проекте от markdown с creole и оставлена, по возможности. Ты почитай топик то, там с markdown все и начиналось.
AM>По поводу популярности: "Sites such as GitHub, reddit, Diaspora, Stack Exchange, OpenStreetMap, and SourceForge use variants of Markdown to facilitate discussion between users"
Ну вот и у нас будет variant of Markdown.
... << RSDN@Home 1.2.0 alpha 5 rev. 100 on Windows 8 6.2.9200.0>>
Как я понял, оттенок цитат — это первый шаг. Но что-то неочень градиент, 1-2 уровня цитаты контрастные, а некоторые сливаются (у меня). Девочку бы посадить, настроить, с 5+ разными мониторами...
Здравствуйте, Ops, Вы писали:
Ops>Как я понял, оттенок цитат — это первый шаг.
Нет. Это просто 100 лет висевшая микрозадачка, которую несложно было сделать. В янусе практически с самого начала реализовано в редакторе.
Ops>Но что-то неочень градиент, 1-2 уровня цитаты контрастные, а некоторые сливаются (у меня).
А остальные не очень и важно. Их, по хорошему, вообще не должно быть, удалять надо.
Ops> Девочку бы посадить, настроить, с 5+ разными мониторами...
Девочку это мы завсегда за
... << RSDN@Home 1.2.0 alpha 5 rev. 100 on Windows 8 6.2.9200.0>>
Здравствуйте, AndrewVK, Вы писали:
Ops>> Девочку бы посадить, настроить, с 5+ разными мониторами... AVK>Девочку это мы завсегда за
Если столько разных мониторов есть — могу жену попросить, она с цветами неплохо разбирается (именно поэтому девочку). Но без этих ваших грязных намеков.
Здравствуйте, AndrewVK, Вы писали:
Ops>>Как я понял, оттенок цитат — это первый шаг.
AVK>Нет. Это просто 100 лет висевшая микрозадачка, которую несложно было сделать. В янусе практически с самого начала реализовано в редакторе.
Здравствуйте, AndrewVK, Вы писали:
AVK>Выделяется символами ** с обеих сторон. При этом слева от открывающей ** должен быть пробел или начало строки, а справа не пробел и не конец строки. Для закрывающей, соответственно, не пробел и не начало строки слева, и пробел или конец строки справа.
Как насчет такого:
Глагол run — это неправильный глагол. Важно знать его формы наизусть.
формы глагола run
1 форма глагола run — r**u**n (первая форма это и есть сам глагол)
2 форма глагола run — r//a//n
3 форма глагола run — r**u**n
Пробельный символ это символ: Unicode символ CharacterTabulation
Unicode символ LineTabulation
Unicode символ FormFeed
Unicode символ ZeroWidthNoBreakSpace
Символ с unicode классом Zs
Разметка делится на две уровня. Разметка уровня документа и разметка содержимого.
К разметке уровня документа относятся: Заголовки.
Списки.
Цитаты сообщений.
Блоковые цитаты (Blockquote).
Таблицы.
Горизонтальный разделитель (вертикальная черта, hr).
Сообщение модератора или системы.
Теглайны.
Параграфы.
К разметке содержимого относится: Стили: жирный, курсив, подчеркнутый, зачеркнутый, верхний и нижний индексы.
Ссылки.
Картинки.
Смайлики.
Код.
Разметка уровня документа
Заголовки
= Уровень 1
== Уровень 2
=== Уровень 3
==== Уровень 4
===== Уровень 5
====== Уровень 6
Начало строки — начало параграфа. Конец строки — соответственно конец. Пустые строки между параграфами игнорируются. Если параграф начинается с пробелов или табуляций — они убираются, а вместо этого в параграфе фиксируется количество отступов. За один отступ считается одна табуляция или два пробела. Нечетное количество пробелов округляется до четного в меньшую сторону.
Строка цитаты имеет следующий формат:
* Префикс из символов, цифр и знака подчеркивания, без пробелов, длиной от 0 до 6 символов.
* Произвольное количество символов >. Количество символов определяет уровень вложенности.
* Произвольный текст до конца строки.
A>> O La La
Bb> One Two
Выходной HTML
<span class='quota level2'><span class='quota-prefix'>A>></span>O La La</span>
<span class='quota level1'><span class='quota-prefix'>Bb>></span>O La La</span>
Списки
Ненумерованный список
Элемент списка — строка, начинающаяся с одного или нескольких символов * (в зависимости от уровня вложенности) и следующего за ним пробела.
Нумерованные и ненумерованные списки могут быть смешаны между собой на разных уровнях. Нумерованные и ненумерованные списки на одном уровне трактуются как два разных списка.
Свернутый блок
Начинается с символов +++ в начале строки и следующего за этими символами названия блока. Завершается строкой из символов +++.
+++ Много текста
Текст текст текст текст.
+++
Выходной HTML
<div class='collapsible'>
<div class='title'>Много текста</div>
<div class='content'>
Текст текст текст текст.
</div>
</div>
Блочная цитата
Начинается с тройного символа " и им же заканчивается.
"""
Один классик сказал …
"""
Перед открывающими кавычками можно указать символ +. Это будет означать, что цитата будет по умолчанию свернута в строку "Цитата".
Строка, состоящая только из трех символов ---
Выходной HTML:
<hr/>
Сообщение модератора или системы
Заключается в скобки из тройных символов !!!
Теглайн
Строка, начинающаяся с трех символов @@@, следующиего за ними одного или нескольких пробелов и произвольным текстом далее до конца строки.
@@@Janus v1.2.1
Выходной HTML:
<div class='tagline'>Janus v1.2.1</div>
Объекты
Предназначены для вставки внешних по отношению к форматтеру объектов. Должно присутствовать уникальное имя объекта, а в теле тега значение параметров в JSON формате.
Общее правило для стилей текста: Открывающая конструкция должна заканчиваться не пробельным символом;
Перед закрывающей конструкцией должен стоять не пробельный символ;
имя изображения может быть пустым. В этом случае в качестве текста используется последний сегмент пути url (имя файла). Если впереди стоит знак + — изображение по умолчанию свернуто.
Выходной HTML
Имеют формат :smileid:, где smileid — строка от 1 до 5 символов английского или русского алфавита без пробелов и знаков препинания. Для каждого smileid должны быть два синонима — в русской и английской раскладке.
Код
Внутри кода игнорируется вся разметка, за исключением выделения. Внутри кода так же допускается использование {{{ и }}}. Признак конца кода определяется парсером по парности фигурных скобок.
Кусок текста, окруженный тройными скобками {{{ и }}} распознается как код. Опционально между второй и третьей открывающей скобкой можно указать название языка.
Текст {{ruby{if (x == 0) return;}}} текст
Выходной HTML:
Текст <span class='code'>if (x == 0) return;</span> текст
Если перед и или за блоком кода не идет ничего кроме пробельных символов или конца строки, такой блок форматируется как блочный.
Перед открывающими скобками можно указать символ +. Это будет означать, что блок кода будет по умолчанию свернут в строку.
Выделение в коде
Выделить можно либо строку целиком, либо конкретный участок кода. Выделенная строка начинается с символов >>> и следующего на ними пробельного символа. Выделенный участок кода должен быть расположен на одной строке и обрамляется символами >>> и <<< слева и справа. Расположение этих символов относительно слов соответствует правилам для выделения жирным.
if (x == 0)
>>> Foo();
else
x = >>>GetX()<<<;
Экранирование
Для экранирования служебного символа можно применять символ экранирования \. Действует только для следующих символов — "\_*+-/!|><@{(:#№[". Все остальные комбинации трактуются как просто текст.
Автозамены
Некоторые комбинации символов заменяются:
* ... (три точки) на … (троеточие)
* --, окруженный пробелами на — (длинное тире)
const string rmdStringSource = "**hello**";
const string rbbStringSource = "[-b]hello[/-b]";
var rmdLexer = new RsdnMarkdownLexer();
var rbbLexer = new RsdnBbCodeLexer();
var rmdTree = Parser.Parse(rmdLexer, rmdStringSource);
var rbbTree = Parser.Parse(rbbLexer, rbbStringSource);
круто, но чем плохи существующие — markdown, textile, etc
A>круто, но чем плохи существующие — markdown, textile, etc
textile не очень удобен, а в markdown много чего не хватает. Вот тут тема есть — http://rsdn.ru/forum/rsdn/4862086.1, в ней в том числе и этот вопрос обсуждался. Этот документ, собственно, на ее основе создан, я его просто перетащил сюда с битбакета, чтобы можно было обсуждать, а заодно и wiki потестировать.
Для markdown есть несколько расширений. Плюс никто не мешает написать свой.
Они много где используются и поддерживаются.
Десятилетие обкатки.
А единый устраивающий всех язык разметки всё равно не создать.
AM>Для markdown есть несколько расширений. Плюс никто не мешает написать свой.
Ну а если писать свой, то тогда в чем вопрос?
AM>Они много где используются и поддерживаются.
Там в топике есть ссылки, и markdown далеко не на первом месте по популярности.
AM>Десятилетие обкатки.
Десятилетие это сильно сказано. Я точно помню что в 2009 это был еще довольно малоизвестный формат. Опять же, bbcode в разы старше, если уж на обкатку ориентироваться.
AM>А единый устраивающий всех язык разметки всё равно не создать.
Но можно создать такой, который устраивает максимальное количество. Да и не в устраиваемости дело, а в удобстве. Большая часть разметок создана хаотично, люди явно не везде тщательно задумывались об удобстве. А у нас еще и специфика двуязычной клавиатуры накладывается.
AVK>Ну а если писать свой, то тогда в чем вопрос?
Имел в виду — "своё". Расширение. А основную базу оставить от markdown.
По поводу популярности: "Sites such as GitHub, reddit, Diaspora, Stack Exchange, OpenStreetMap, and SourceForge use variants of Markdown to facilitate discussion between users"
Тут, конечно, дело вкуса и свободного времени, если есть возможность, то создавайте и обкатывайте — "больше языков хороших и разных".
AM>Имел в виду — "своё". Расширение. А основную базу оставить от markdown.
База в обсуждаемом проекте от markdown с creole и оставлена, по возможности. Ты почитай топик то, там с markdown все и начиналось.
AM>По поводу популярности: "Sites such as GitHub, reddit, Diaspora, Stack Exchange, OpenStreetMap, and SourceForge use variants of Markdown to facilitate discussion between users"
Ну вот и у нас будет variant of Markdown.
AVK>Ну вот и у нас будет variant of Markdown.
Есть спецификация Markdown: http://standardmarkdown.com
Как я понял, оттенок цитат — это первый шаг. Но что-то неочень градиент, 1-2 уровня цитаты контрастные, а некоторые сливаются (у меня). Девочку бы посадить, настроить, с 5+ разными мониторами...
Ops>Как я понял, оттенок цитат — это первый шаг.
Нет. Это просто 100 лет висевшая микрозадачка, которую несложно было сделать. В янусе практически с самого начала реализовано в редакторе.
Ops>Но что-то неочень градиент, 1-2 уровня цитаты контрастные, а некоторые сливаются (у меня).
А остальные не очень и важно. Их, по хорошему, вообще не должно быть, удалять надо.
Ops> Девочку бы посадить, настроить, с 5+ разными мониторами...
Девочку это мы завсегда за
Ops>> Девочку бы посадить, настроить, с 5+ разными мониторами...
AVK>Девочку это мы завсегда за
Если столько разных мониторов есть — могу жену попросить, она с цветами неплохо разбирается (именно поэтому девочку). Но без этих ваших грязных намеков.
Ops>>Как я понял, оттенок цитат — это первый шаг.
AVK>Нет. Это просто 100 лет висевшая микрозадачка, которую несложно было сделать. В янусе практически с самого начала реализовано в редакторе.
Вот тут баг.
Ops>Вот тут баг.
http://track.rsdn.ru
AVK>http://track.rsdn.ru
Уболтал, зарегаюсь. Но тогда еще реквест сквозной регистрации запощу туда
Ops>Уболтал, зарегаюсь. Но тогда еще реквест сквозной регистрации запощу туда
Пости конечно, но в Youtrack с этим довольно глухо.
AVK>Выделяется символами ** с обеих сторон. При этом слева от открывающей ** должен быть пробел или начало строки, а справа не пробел и не конец строки. Для закрывающей, соответственно, не пробел и не начало строки слева, и пробел или конец строки справа.
Как насчет такого:
Глагол run — это неправильный глагол. Важно знать его формы наизусть.
формы глагола run
1 форма глагола run — r**u**n (первая форма это и есть сам глагол)
2 форма глагола run — r//a//n
3 форма глагола run — r**u**n
Standard Markdown Spec: 6.4 Emphasis and strong emphasis
_R_>Standard Markdown Spec: 6.4 Emphasis and strong emphasis
В принципе, можно использовать правила из SMD. Поправь только страничку с описанием здесь.
Спецификация разметки
Общие правила и определения
Пробельный символ это символ:
Unicode символ CharacterTabulation
Unicode символ LineTabulation
Unicode символ FormFeed
Unicode символ ZeroWidthNoBreakSpace
Символ с unicode классом Zs
Разметка делится на две уровня. Разметка уровня документа и разметка содержимого.
К разметке уровня документа относятся:
Заголовки.
Списки.
Цитаты сообщений.
Блоковые цитаты (Blockquote).
Таблицы.
Горизонтальный разделитель (вертикальная черта, hr).
Сообщение модератора или системы.
Теглайны.
Параграфы.
К разметке содержимого относится:
Стили: жирный, курсив, подчеркнутый, зачеркнутый, верхний и нижний индексы.
Ссылки.
Картинки.
Смайлики.
Код.
Разметка уровня документа
Заголовки
Выходной HTML
Параграфы
Начало строки — начало параграфа. Конец строки — соответственно конец. Пустые строки между параграфами игнорируются. Если параграф начинается с пробелов или табуляций — они убираются, а вместо этого в параграфе фиксируется количество отступов. За один отступ считается одна табуляция или два пробела. Нечетное количество пробелов округляется до четного в меньшую сторону.Выходной HTML
Цитаты сообщений
Строка цитаты имеет следующий формат:* Префикс из символов, цифр и знака подчеркивания, без пробелов, длиной от 0 до 6 символов.
* Произвольное количество символов >. Количество символов определяет уровень вложенности.
* Произвольный текст до конца строки.
Выходной HTML
Списки
Ненумерованный список
Элемент списка — строка, начинающаяся с одного или нескольких символов * (в зависимости от уровня вложенности) и следующего за ним пробела.Выходной HTML
Нумерованный список
Элемент списка — строка, начинающаяся с символа # или № и следующего за ним пробелаВыходной HTML
Нумерованные и ненумерованные списки могут быть смешаны между собой на разных уровнях. Нумерованные и ненумерованные списки на одном уровне трактуются как два разных списка.
Свернутый блок
Начинается с символов +++ в начале строки и следующего за этими символами названия блока. Завершается строкой из символов +++.Выходной HTML
Блочная цитата
Начинается с тройного символа " и им же заканчивается.Перед открывающими кавычками можно указать символ +. Это будет означать, что цитата будет по умолчанию свернута в строку "Цитата".
Таблицы
Выходной HTML:
Горизонтальный разделитель
Строка, состоящая только из трех символов ---Выходной HTML:
Сообщение модератора или системы
Заключается в скобки из тройных символов !!!Теглайн
Строка, начинающаяся с трех символов @@@, следующиего за ними одного или нескольких пробелов и произвольным текстом далее до конца строки.Выходной HTML:
Объекты
Предназначены для вставки внешних по отношению к форматтеру объектов. Должно присутствовать уникальное имя объекта, а в теле тега значение параметров в JSON формате.Выходной HTML определяется хостом.
Разметка содержимого
Общее правило для стилей текста:
Открывающая конструкция должна заканчиваться не пробельным символом;
Перед закрывающей конструкцией должен стоять не пробельный символ;
Жирный
Выделяется символами ** с обеих сторон.Выходной HTML
Курсив
Выделяется символами // с обеих сторон. Правила по обрамлению пробелами соответствуют выделению жирным.Выходной HTML
Подчеркнутый
Выходной HTML
Перечеркнутый
Выходной HTML
Верхний индекс
Выходной HTML
Нижний индекс
Выходной HTML
Ссылки
Текст ссылки может быть пустым. В этом случае в качестве текста используется сам url, но с заменой url escaping на исходный текст.
Выходной HTML
Ссылки на сообщения по имени
Текст ссылки может быть пустым. В этом случае текст должен предоставить хост. url ссылки формируется по имени хостом.
Выходной HTML
Изображения
имя изображения может быть пустым. В этом случае в качестве текста используется последний сегмент пути url (имя файла). Если впереди стоит знак + — изображение по умолчанию свернуто.
Выходной HTML
Смайлы
Стандартные смайлы
Выходной HTML
Смайлы из расширений
Имеют формат :smileid:, где smileid — строка от 1 до 5 символов английского или русского алфавита без пробелов и знаков препинания. Для каждого smileid должны быть два синонима — в русской и английской раскладке.Код
Внутри кода игнорируется вся разметка, за исключением выделения. Внутри кода так же допускается использование {{{ и }}}. Признак конца кода определяется парсером по парности фигурных скобок.Кусок текста, окруженный тройными скобками {{{ и }}} распознается как код. Опционально между второй и третьей открывающей скобкой можно указать название языка.
Выходной HTML:
Если перед и или за блоком кода не идет ничего кроме пробельных символов или конца строки, такой блок форматируется как блочный.
Выходной HTML:
Перед открывающими скобками можно указать символ +. Это будет означать, что блок кода будет по умолчанию свернут в строку.
Выделение в коде
Выделить можно либо строку целиком, либо конкретный участок кода. Выделенная строка начинается с символов >>> и следующего на ними пробельного символа. Выделенный участок кода должен быть расположен на одной строке и обрамляется символами >>> и <<< слева и справа. Расположение этих символов относительно слов соответствует правилам для выделения жирным.Экранирование
Для экранирования служебного символа можно применять символ экранирования \. Действует только для следующих символов — "\_*+-/!|><@{(:#№[". Все остальные комбинации трактуются как просто текст.Автозамены
Некоторые комбинации символов заменяются:* ... (три точки) на … (троеточие)
* --, окруженный пробелами на — (длинное тире)
rmdTree == rbbTree
AVK>Старое обсуждение
AVK>Спецификация языка разметки
AVK>API парсера
AVK>Репозиторий
Круто! Надоело переключать раскладку, чтобы ввести эти долбанные квадратные скобки!
AD>Круто! Надоело переключать раскладку, чтобы ввести эти долбанные квадратные скобки!
Временно можно хоткеи в редакторе прикрутить, если кто составит табличку.