Уткнулся я тут в генерацию разнокалиберного HTML из своего расширенного BB-code (в первую очередь — генерация контента под очень разную ширину блоков) и пришла в голову мысль.
Сейчас транслятор разметки проводит очень много вспомогательных операций. Ну, например, брошенная отдельной строкой ссылка вытягивает с указанной страницы заголовок, описание, og:image, если последнего нет — генерит превью страницы, а потом в таком видел лепит в HTML. Например, так:
http://www.balancer.ru/img/forums/1302/lcml-sample-150301.png
В исходном тексте сообщения это только две строчки со ссылками.
При генерации под разные условия возникает проблема повторного использования тяжёлых операций. Когда один раз — не страшно. Сгенерировали (всё руки не доходят вообще на gearman перекинуть тяжёлые операции, реализовал пока на уровне теста концепции превью ссылок на PDF, но ещё работать и работать) один раз, сохранили скомпилированный вариант — и отлично, больше систему оно не грузит.
В случае нескольких разных вариантов трансляции с этим всё плохо. Ну, закешировать можно и несколько разных вариантов. Но для каждого придётся повторно выполнять тяжёлую трансляцию.
Естественно, в голову приходит вариант «тяжёлой» трансляции в промежуточный код. Сперва думал о расширенном bb-коде, в котором уже будет всё нужное. Ну, типа из
http://lenta.ru/news/2012/12/21/will/
http://lenta.ru/news/2012/12/21/mistral1/
[url=http://lenta.ru/news/2012/12/21/will/]
[img float-left]http://www.balancer.ru/cache/sites/i/m/img.lenta.ru/news/2012/12/21/will/200x200/picture.jpg[/img]
[b]Lenta.ru: Оружие: ОСК опровергла отказ Минобороны от строительства "Мистралей"[/b]
[/url][br]
ОСК не получала от Министерства обороны России уведомления об отказе от планов строительства в России двух вертолетоносцев типа Мистраль. Об этом заявил пресс-секретарь ОСК Алексей Кравченко. Ранее газета Ведомости написала, что Минобороны отказалось от опциона на постройку третьего и четвертого Мистралей.
// [url=http://lenta.ru/news/2012/12/21/will/]lenta.ru[/url]
…
Вроде, всё извлечённое уже есть, потом только сгенерировать по-быстрому HTML… Но как-то оно неправильно показалось тащить в мета-разметку, которая более представляется логической сразу визуальное представление.
Тогда, следующий логичный шаг — переход к XML:
<site-link>
<url>http://lenta.ru/news/2012/12/21/will/</url>
<image>http://img.lenta.ru/news/2012/12/21/will/picture.jpg</image>
<title>Lenta.ru: Оружие: ОСК опровергла отказ Минобороны от строительства "Мистралей"</title>
<description>ОСК не получала от Министерства обороны России уведомления об отказе от планов строительства в России двух вертолетоносцев типа Мистраль. Об этом заявил пресс-секретарь ОСК Алексей Кравченко. Ранее газета Ведомости написала, что Минобороны отказалось от опциона на постройку третьего и четвертого Мистралей.</description>
</site-link>
<site-link>
...
</site-link>
Получается и разметка логическая, и однозначно транслируемые элементы (типа <strong>...<em>...) можно сразу отранслированными хранить, и трансляцию можно проводить общесистемными средствами уже, не велосипедить, да и даже компактнее в хранении, порой. Ну и формат вывода гибко менять можно.
Вроде, одни плюсы со всех сторон.
Но тут и третья сразу мысль — а никто такого ранее не делал в готовом виде? Вроде, настолько очевидное решение, что в голову приходит — а не занялся ли я велосипедостроением?
Кто что скажет?