Разметка постов

Я сейчас пишу все свои посты (и, соответственно, и вы все комментарии здесь) с использованием Markdown’а. Он достаточно прост для написания, несложен для чтения (в отличии от требующих значительно большего количества букв HTML или, OMG, bbcode ;-), но у него есть одна маленькая загвоздка - он требует постоянного переключения на английский язык для написания практически любого элемента. Кроме того, выделение кода отступом в 4 пробела - это тоже порядочная проблема - в коде длиной более двух строк в браузере это превращается в мучение (я немного решил проблему использованием внешнего редактора, но всё равно хотелось бы какой-то простоты, что ли?).

И вот у меня давненько бродят мысли про разметку, которая проще будет относиться к русской раскладке (использовать что-то типа двойных круглых скобок для ссылок, а не квадратных) и вообще быть более дружественным к таким пользователям, как я. А не как “он”. :D

Одно только останавливает - и маркдаун, при всей своей популярности, не слишком распространён в нетехнической среде, а уж мой велосипед… Получается просто почкование сущностей и дополнительная неразбериха… Нужно ли оно? :-(

Comments: 36 (already: 0) Comment post

Для авторов оно может быть и надо. А для комментирующих - вряд ли, я думаю.

ИгорёкК , 14:37

Что именно? Удобство набора без переключений клавиатуры? :-) Так а если ты хочешь закомментить с каким-то кодом, очень удобно расставлять по 4 пробела? :)

Alexander Solovyov , 15:59

4 пробела - это ваще дикость какая-то =)

Grigoriy Petukhov , 11:09 (after 1 day)

И не говори. :-( Хорошо бы, как у Трака в wiki - {{{ }}}.

Alexander Solovyov , 11:38 (after 1 day)

Знаешь, я после использования тучи разных вики-синтаксисов, ббкода и маркдауна пришел к выводу, что лучший вариант — это простой HTML (если редактировать даем не криворуким), просто потому что не нужно учить новый синтаксис и он распространен. В том же маркдауне мне многое нравится, но его убогий синтаксис ссылок сводит все на нет. А для постов — так вообще сложно, например, как ты в маркдауне отцентруешь картинку в контенте или заставишь текст обтекать ее?

Александр Локшин , 15:59

если редактировать даем не криворуким

Писать комментарии даём всем, не так ли? :-)

В том же маркдауне мне многое нравится, но его убогий синтаксис ссылок сводит все на нет.

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

как ты в маркдауне отцентруешь картинку

Ну… предполагаемый способ решения - или упасть до чистого HTML, или написать расширение. :-) Но я не часто иллюстрирую текст, по крайней мере пока. :-)

Alexander Solovyov , 17:47

У Ильи Бирмана в комментариях используется синтаксис WackoWiki, «совместимый» с русской раскладкой.

voldmar , 17:31

Хм. А вот это интересная идея. Надо оценить его…

Alexander Solovyov , 17:51

Не помню — писал ли я тебе об этом в комментарии или в jabber, но точно помню, что писал.

PS: вот сейчас хотел было поискать по блогу, и обломался

Денис Лозко , 19:13 (after 1 day)

Нашел. Таки в jabber:

(22:13:04) Соловьев, Александр: http://wackowiki.com/WackoDokumentacija/WackoSintaksis

(22:13:07) Соловьев, Александр: цуйня

(22:13:13) Соловьев, Александр: полная цуйня

К стати сам сайт ваки не работаить, на сколько я понима, при

UPD: при edit’е поста нет preview %)

Денис Лозко , 19:16 (after 1 day)

Таки да… Я и сейчас посмотрел - не уверен остался очень. :-)

UPD: при edit’е поста нет preview %)

И не исчезает кнопка reply. Будет починено. :-)

Alexander Solovyov , 11:19 (after 2 days)

Сёрч ещё не сделан. Времени требует, которого требуют и некоторые другие вещи тоже. :-)

Alexander Solovyov , 11:18 (after 2 days)

Лучшее что видел - ReSructuredText. Идеально для статей с программным кодом, в т.ч. и Питон, и xml-подобный синтаксис. И с изображениями тоже вроде все удобно. Без тэгов, простой и интуитивный. Никаких переключений раскладок. Что еще нужно для полного счастья ? …

astoon , 17:37

Никаких переключений раскладок.

Бэктики для ссылок? Ну да и у него в общем синтаксис… Но как минимум крупный недостаток - это бэктики (их вообще не так просто увидеть в некоторых шрифтах) и невозможность поставить номер для ссылки, чтоб потом позже его указать - только полный текст (а если я его поменял - идти и внизу менять, весело). Инлайновые ссылки тоже отсутствуют.

В общем, похоже это не то… :(

Alexander Solovyov , 17:51

http://npj.ru/node/chastyevoprosy/zapisizhurnala/wikisintaksis

По моему скромному мнению, крайне интуитивно…

Олег Горбунов , 22:05

C npj.ru какие-то траблы, похоже:

>host npj.ru
;; connection timed out; no servers could be reached
Alexander Solovyov , 10:26 (after 1 day)

Я думаю, велосипед не нужен.

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

А вот для комментаторов, на самом деле, единственное нормальное решение — это тулбар с кнопками. Ни один из языков не распространен настолько сильно, чтобы признать его стандартом. Поэтому большинство комментаторов всегда будут не знать, как тут это делается. А кнопочки достаточно очевидны. Причем, я не говорю о WYSIWYG, кнопочки могут буквально расставлять *...* вокруг слов и смещать блоки кода на 4 пробела.

Иван Сагалаев , 22:00

Я думаю, велосипед не нужен.

Я по большей части думаю так же, но уж больно… задолбало. :-)

а я пришел в итоге к выводу, что переключаю раскладку я и без него достаточно много

Ну… Когда я набираю текст, а в нём встречаются английские слова - раскладку, конечно, приходится переключать. Но для меня оно как-то легко получается, переключать раскладку на пробеле (в смысле, перед ним или после него :). А вот поставить квадратные скобки - напрягает. Я уже и добавлял их в раскладку через C-A-х и C-A-ъ (это в винде, там с MSKLC попроще такое сделать), и пытался их ставить после набора - этот вариант вышел ещё хуже. Вообще, логичный способ - ставить сначала скобки, а потом уже в них писать текст - сбивает вообще с толку меня. :-)

В общем, я только что подумал, что просто надо пользоваться Емаксом. Нажал C-i, этот текст открылся в Емаксе - и отлично, можно набирать. Правда, маркдауновский режим ещё требует доработки, но это мелочи, там как раз такое проще сделать. :-)

А вот для комментаторов, на самом деле, единственное нормальное решение — это тулбар с кнопками.

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

Alexander Solovyov , 10:25 (after 1 day)

markdown - это гиковое решение, про которое народ слыхом не слыхивал. Если рассматривать byteflow, как приложение для всех, то лучшим вариантом были бы кнопочки, которые вставляют bbcode :-)

Ещё можно дать возможность комментирующему выбирать синтаксис разметки, используя выпадающее меню и запоминать этот выбор автоматически в кукисах или даже в профиле пользователя.

А ещё было б круто реализовать живой предпросмотр на JS - т.е. печатаешь, например, bbcode, а внизу сразу он рендерится. Я, кстати, где-то видел такое для markdown, ну и для bbcode будет сделать не слишком сложно.

Grigoriy Petukhov , 11:17 (after 1 day)

лучшим вариантом были бы кнопочки, которые вставляют bbcode :-)

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

Ещё можно дать возможность комментирующему выбирать синтаксис разметки

Да, нужно. Будем сделать. :-)

А ещё было б круто реализовать живой предпросмотр на JS

Хехе, где-то я такое уже видел… :-D Моя точка зрения заключается в том, что при посылании на сервер эта штука рендерится так же, как и просто при комментировании. И не надо тогда синхронизировать JS и серверную версии. :-)

Alexander Solovyov , 11:37 (after 1 day)

На Ярушке есть живой предпросмотр. Неплохая штука.

ИгорёкК , 13:18 (after 1 day)

У каких-то маньяков программных тоже… %)

Alexander Solovyov , 15:21 (after 1 day)

Удивился, прочитав ваш пост. Потому что двойные скобки я уже реализовал, но не для ссылок. Не знаю будет ли вам интересно увидеть как я это сделал, так что опишу вкратце свой extended python-markdown

В блогах обычно нужно позволять пользователям не так много возможностей (в моем и подавно). Но все-таки “гиковского” маркдауна не хватает, потому что нет возможности сделать эпиграф, или выровнять текст по центру, или указать будет ли у параграфа отступ первой строки.

В python-markdown внутри параграфа (ссылки, картинки, …) можно написать {@att=val}, это уже давно так можно. Но пользователя, конечно, очень неприлично просить написать {@style=text-align:center;}, поэтому я поступил следующим образом. Создал препроцессор, который будет заменять некоторые метки на эти конструкции.

Метками стали ((слева)), ((справа)), ((эпиграф)), ((без отступа)) и так далее. Понятное дело, что кому-то захочется сделать эпиграф без отступа первой строки. Тогда можно написать Текст эпиграфа ((без отступа))((эпиграф)) и получится <p class='noident epigraph'>Текст эпиграфа</p>.

Но такой “велосипед” недостаточно хорош без кнопочек над текстовой формой, которые вставляют эти метки. Получается bbcode без [ и ].

Потестировать эту штуку можно у меня на сайте (возможно большое количество ошибок, так как тестировались эти разметка и предпросмотр пока только мною и несколькими пользователями, далекими от IT).

Алексей Гусев , 14:26 (after 1 day)

так что опишу вкратце свой extended python-markdown

Ну я по странному стечению обстоятельств его и использую. :-)

В блогах обычно нужно позволять пользователям не так много возможностей

Я тут вдруг понял, что жутко хочу отключить {@att=val} здесь. Пошёл читать доки. :-)

Получается bbcode без [ и ].

Угу. Но я собственно никак не напрягаюсь по поводу отсутствия эпиграфов и прочих штук - я сам этим делом сейчас не пользуюсь и в ближайшие дни пользоваться не начну. А вот []() ссылки меня немножко… раздражают.

P.S.Спасибо за демонстрацию, кстати. :-)

Alexander Solovyov , 15:20 (after 1 day)

Ну я по странному стечению обстоятельств его и использую. :-)

В нативном перл-маркдауне так бы ({@att=val}) не получилось. Но эти штуки можно резать тем же препроцессором, так что это катастрофа, но не ужасная :-)

Алексей Гусев , 15:37 (after 1 day)

Хммм… А есть готовое решение, куда что написать, что оно перестало работать? :-) А то лень читать документацию. Хотя через время, конечно, пойду и сделаю это. :-)

Alexander Solovyov , 17:15 (after 1 day)

Если хотите, я пришлю вам готовое решение, или запостю тут :-)

Алексей Гусев , 10:13 (after 2 days)

Хочю, piranha at piranha.org.ua :-) Спасибо заранее. :-)

Или можно и тут, не слишком большая разница.

Alexander Solovyov , 11:23 (after 2 days)

Вот решение (наверняка не самое правильное, но рабочее). Регвыр, конечно мог быть и более точным (например, \{(@[a-zA-z]+)=(.+)\}), но это ведь дело вкуса, да? :-)

import re  
from markdown import Markdown

class BadPreprocessor :
    def run(self, lines) :
        for i in range(len(lines)):
            lines[i] = re.sub(r'\{@', "{\@", lines[i])
        return lines

def BadMarkdown(value, *a, **k):
    md = Markdown(*a, **k)
    md.preprocessors.append(BadPreprocessor())
    return md.convert(value)

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

Алексей Гусев , 17:33 (after 2 days)

Я предпочитаю писать черновики в markdown, а чистовики в html. Т.е. пока пишешь сам текст, разметка чисто условная и достаточно markdown. Потом получаю html, перечитываю, правлю ошибки уже в html.

А комментарии вполне можно писать в markdown, или в html, или в wiki-синтаксисе ;) Мне больше нравится simplified html. Банально - если комментирующие не знают html, то получится не сильно страшно, а если знают - то получится как надо.

P.S.У меня создалось впечатление, что ниша wiki/markdown/rest-синтаксисов - документация. В форумах традиционно используется bb, а в блогах - simplified html.

Юревич Юрий , 04:48 (after 2 days)

Я предпочитаю писать черновики в markdown, а чистовики в html.

Однако… Не знаю, что сказать. :-) Типа, не доверяешь злобному маркдауну? :)

Банально - если комментирующие не знают html, то получится не сильно страшно

А с маркдауном ситуация сильно отличается? Заодно и комменты можно ставить, как в мыле - использованием >. :-)

В форумах традиционно используется bb

Надо это менять. Точно-точно.

Alexander Solovyov , 11:25 (after 2 days)

типа, не доверяешь злобному маркдауну? :)

в маркдауне нельзя указать атрибуты HTML элементов, к примеру

Денис Лозко , 13:37 (after 2 days)

Это читал?

Alexander Solovyov , 15:11 (after 2 days)

В python-markdown внутри параграфа

Ку? Это не фича самого маркдауна, да и то — только для параграфа.

Денис Лозко , 09:46 (after 3 days)

Это фича самого python-markdown и не только для параграфа.

Алексей Гусев , 22:16 (after 3 days)

точно, надо и самому так делать

Денис Лозко , 13:38 (after 2 days)

Comment form for «Разметка постов»

Required. 30 chars of fewer.

Required.

Comment post