И всё бы хорошо, если верстать приходится не слишком часто. Или посты небольшие, несложные. Но если вы верстаете помногу, и в постах есть и картинки, и таблицы, и куски кода, то из раза в раз приходится делать рутину: вставлять нужные пустые строки и убирать лишние, заменять теги
<sоurce>
на <cоde>
, и т.д. и т.п. Мы решили потратить день, чтобы потом долетать за час, и допилили конвертер.Новая версия лежит тут, а под катом — перечисление доработок.
Код конвертера небольшой, примерно 300 строк. Мы не ставили себе задачи глубоко его переработать, лишь подрихтовать, чтобы после конвертера меньше править руками. Так что сразу обращаем ваше внимание: в нашей версии много костылей и хардкода, и нас это полностью устраивает — своей цели мы достигли, а рефакторить ради красоты и ясности мы и не собирались.
Конечно, когда влезаешь в чужой код и что-то переделываешь, легче лёгкого наделать багов. Изначально список правок был таким:
- После абзацев нужно делать два переноса, чтобы между абзацами появлялась пустая строка.
- То же самое с картинками: теги
<img>
должны сверху и снизу отделяться пустыми строками.- После
</sоurce>
нужен только один перенос строки (без пустой строки).- Закрывающие теги
</li>
хорошо бы помещать не на отдельных строках, а в конце предыдущих, так легче визуально воспринимать код вёрстки.- После
</a>
перенос не делать.- После
</tаble>
один перенос.- После
</h>
не надо делать пустые строки, Хабр сам вставит.- Если строка заканчивается обычным текстом, то делать два переноса.
- После закрывающего тега
</ul>
пустая строка не нужна, Хабр сам вставит.- То же самое с закрывающим тегом
</blockqoute>
.
- Потом мы научили конвертер распознавать, когда нужно вставлять
<cоde>
, а когда<sоurce>
(это моя любимая доработка). - Добавили правило, чтобы внутри тегов
<tаble></tаble>
всегда используется только<cоde>
, а не<sоurce>
. - Заменили
<b>
на рекомендуемый<strоng>
. - Принудительно убрали из заголовков жирный текст и теги списков — кому нужно, вставят руками, а обычно это лишнее.
Исправили такие баги:
- Не обрабатывать содержимое
<>
, оно всегда должно оставаться неизменным. Пример: код<img src="https://habrastorage.org/getpro/habr/post_images/208/1cc/1fa/2081cc1fa6dbebbbb6ddd4108512ff5b.png" align="cеnter">
в тексте должен после конвертирования остаться таким же. - Есть какой-то конфликт, когда соседствуют
<ul>
и<h>
— возникают ненужные пустые строки между ними. - По ходу дела наш конвертер вдруг начинал вставлять лишние строки там, где их быть не должно. Потом в какой-то момент в тегах картинок стали добавляться лишние кавычки-ёлочки, тоже пришлось это выпиливать:
<img src="«https://habrastorage.org/getpro/habr/post_images/208/1cc/1fa/2081cc1fa6dbebbbb6ddd4108512ff5b.png»" аlign="«center»">
- Побороли неожиданное поведение, когда у первой картинки в вёрстке вставлялся атрибут
аlign="center"
, а у всех остальныхаlign="middle"
.
Ах да, и добавили над окном конвертирования кнопку «Копировать». Если вы хоть раз пробовали выделить получившийся результат на смартфоне, чтобы скопировать, то вы поймёте, что это чуть ли не лучшая наша доработка.
Сейчас после нашего конвертера приходится в разы меньше править мелкие недочёты, на которые при нашем месячном объёме публикаций тратилась куча времени. Как и все предыдущие версии, конвертер доступен всем желающим — pull request’ы и issue приветствуются.
Исходник: https://github.com/AloneCoder/habrconverter
Морда: https://alonecoder.github.io/habrconverter/
Fox_exe
Когда уже на хабре появится полноценный WYSIWYG редактор? CKEditor или подобное. Чтобы верстки вообще не видеть. 21й век на дворе вроде как…
1eternal
это ж вы предлагаете сделать удобный инструмент для пользователя и оставить целый отдел программистов без работы?
Boomburum
А вот скоро уже и появится :) Но за конвертер AloneCoder огромное спасибо!
sidristij
Было бы крайне здорово иметь в нем все доступные функции форматирования типа цвета заголовков. Чтобы не лезть опять в мерзкий HTML ))
nckma
Мне всегда было интересно, почему разработчики блогов никогда не дают пользователям создавать интерактивные статьи? Почему обычно только вставка изображений и видео и все? Ну максимум имеется возможность опроса…
Но ведь интересней, когда более интересно?
Пример моей интерактивной статьи: marsohod.org/11-blog/245-spectr
Boomburum
На самом деле через oembed можно довольно много чего делать ) Согласен, что возможно интересней было бы, но вряд ли массово этим пользовались, да и некоторые новоиспечённые авторы едва справляются с markdown-разметкой (
nckma
Для этого должна прийти мода.
Ну и эту уникальную возможность можно рекламировать. Реклама заставляет человека нуждаться в том, о чем он раньше даже не подозревал.
KvanTTT
Как они едва справляются с markdown, когда это легче, чем html?
FenixFly
Кстати. С Markdown есть интересная особенность: если писать например в файл на гитхабе, то предложение можно разбивать на строки по 80 символов, и гитхаб это склетит обратно в одно предложение. А вот хабр так не умеет, и поэтому мне пришлось потом делать много правок вручную. А иметь целое предложение в одной строке часто неудобно, так как оно длинное.
KvanTTT
Конечно может — это стандартное поведение, такая таска уже давно висит в dear-habr: Строки, разделенные одним разрывом, должны относиться к одному абзацу. В целом без него у хабровского markdown много багов.
Для этого рекомендую использовать конвертер MarkConv. Помимо исправления строк, он умеет править другой синтаксис, проверять и конвертировать ссылки. В общем конвертирует статью из формата GitHub в формат хабра одной командой. К сожалению, пока не хватает времени его допилить до более удобного вида, а также прописать README, а лучше статью.
FenixFly
Спасибо, в следующий раз попробую MarkConv)))
empenoso
Очень не хватает возможности вставлять вот такое динамическое оформление:
https://developers.google.com/chart/interactive/docs/gallery/piechart?hl=ru
Или подобное.
OZR
Последний CKEditor в том же IPB настолько глучное и ужаснейшее тормозное УГ, со множеством переодических плавающих багов, вроде не удаляется символ, нет возврата каретки на первую строку, не переводится строка… и т.п, которое проявляется чёрт знает когда, но всегда неудобно…
В итоге меня почти вынудили перестать пользоваться форумом IPB только из-за CKEditor. Не в vim/vscode же комментарии писать. Так что 21-век, но лучше надёжное и оттестирование решение, чем тот же CKEditor.
Crimento
Немного оффтоп, но что по поводу Summernote думаете?
OZR
До этого комментария не знал о его существовании. На первый взгляд очень даже приятненько. Попробую его позже привязать к блогу и потестировать. Хотя я в последнее время чаще склоняюсь к markdown редактированию, а не WYSIWYG.
cehopo
Вообще-то «в том же IPB» далеко не «последний CKEditor». Чтобы что-то хаять, неплохо бы хотя бы немного знать предметную область.
OZR
invisioncommunity.com/4guides/themes-and-customizations/tips-tricks_362/styling-ckeditor-r178
Открываем тот же форум на IPB forum.bits.media, доходим до редактора и видим классы cke_
cehopo
И? Это далеко не «последний CKEditor».
KvanTTT
Так используйте Markdown вместо html. Мне как программисту WYSIWYG не очень заходит. Тем более есть typora.
MacIn
Все визивиг'и так или иначе лажают. То одно, то второе и хорошо, когда можно посмотреть как оно происходит за занавеской и поправить руками. Для себя давно выбрал asciidoc для написания заметок и тому подобного.
PsyHaSTe
На всех сайтах с визивигом его вырубаю — маркдаун наше все. И нет страха что оно там как-то странно отрендерится или я не смогу совместить пару стилей вместе.