Как вы наверняка помните, bnw умеет в три разных синтаксиса для сообщений - markdown, moinmoin и plaintext.
Проблема в том, что сейчас эти форматы реализуются на клиенте и работают криво и неконсистентно.
Например meow считает все сообщения маркдауном, жаббер-морда не умеет в форматирование, старый android-клиент (мой) не умеет в форматирование, новый android-клиент юзал пререндеренный html от сервера, но автор его похоже подзабросил.
Я уже полгода с перерывами по паре месяцев иногда немножко попиливаю эксперименты с форматированием, каким бы хотел его видеть.
План таков:
1. Сообщение парсится один единственный раз - на сервере, при создании. После этого в бд хранится и отдается клиентов промежуточная форма.
2. Клиенты получают промежуточную форму и превращают её в HTML или что-то своё (XHTML-IM, телегу, андроидовские спаны).
Таким образом клиентам не нужно уметь во все три форматирования, нужно уметь только в промежуточную форму.
Пока предполагается, что промежуточная форма это набор вертикальных блоков (
http://q.blasux.ru/formatting-block-types.png):
* параграф - набор кусков текста с аттрибутами: жирный, курсив, зачеркнутый, подчеркнутый, ссылка, инлайн-блок-кода.
* заголовок - то же самое что параграф, но еще с размером заголовка
* список (с цифрами или с буллетами) - каждый элемент списка - параграф
* блок кода - просто прямоугольник преформатированного кода с раскраской
* блочная цитата - единственный блок, в который можно вкладывать все другие блоки
* блок мультимедии (это то, куда переедут превью картинок)
Предлагаю обсудить как вам будет не хватать выразительности такой схемы. Обращу внимание на то, что чем она проще - тем больше шанс что во все клиенты будет впилена полная поддержка. Маркдаун с цитатами в списках в цитатах в таблицах я просто ебал.