Язык разметки Wiki с отличной поддержкой таблиц
Я разрабатываю вики с Python/Django, частично для образовательных целей. До сих пор мне не хватает правильного языка разметки. Я попробовал довольно посмотреть, в том числе Creole и Markdown, которые работали хорошо, за исключением поддержки таблицы. Обычные языки разметки вики, кажется, поддерживают только элементарные таблицы, то есть одну строку на ячейку или нет сложных разметок внутри ячеек. Но пользователи моей вики хотят иметь возможность создавать таблицы с большим форматным текстом и списками внутри ячеек. У меня проблемы с поиском языка разметки, который действительно может это сделать.
Я смотрел на язык разметки MediaWiki, который, кажется, поддерживает все, но я думаю, что использование этого было бы излишним. Остальная часть разметки может быть довольно простой с акцентом на удобочитаемость разметки (иногда я нахожу разметку MediaWiki несколько уродливой). Кроме того, должен быть модуль Python для перевода разметки в HTML, который я могу использовать в веб-приложении. Я все еще ищу разметку MediaWiki.
Еще одна альтернатива - вообще сбросить языки вики-разметки и вместо этого разрешить набор определенных тегов HTML для разметки. Но это затрудняет написание вики-статей, поскольку HTML не изобретен для такого использования. а также поиск и выход из запрещенного HTML может быть довольно сложным делом. Я бы предпочел иметь хороший язык разметки с легкой реализацией Python.
Кто-нибудь знает язык разметки с расширенной поддержкой таблиц и реализацией на Python, который я мог бы использовать?
Заранее спасибо!
2 ответа
Я сам нашел решение, так как нашел, что reST сложен в использовании для технически неопытных пользователей. Я мог бы быть немного сложным, но это работает для меня.
Ключ является расширением для уже существующего языка разметки. Я нашел Markdown довольно приятным, несмотря на отсутствие поддержки стола. Используя Python-Markdown, здесь есть все, что вам нужно знать для написания собственного расширения. Это не так сложно. Я взломал что-то вместе за полчаса, и это действительно работает до сих пор. Я хотел бы показать код здесь, но я пока не очень им горжусь;) По сути, вы анализируете блок разметки и вставляете элементы таблицы в DOM, как вам нравится.
Я предполагаю, что каждая полезная реализация языка разметки должна иметь какой-то механизм расширения, поэтому должна быть возможность писать расширения и для других языков и реализаций. Это не самое удобное решение, но все же лучше, чем использование какого-то уродливого языка только ради функции.
Я не знаю, отвечает ли это вашим потребностям, но вы могли бы использовать reStructuredText. Sphinx генерирует html из него для документации по питону и его написания на python, поэтому его должно быть легко использовать для этой цели. Я нахожу его очень аккуратным и легким для чтения, поскольку он предназначен для этого, и он может делать довольно сложные таблицы.