Лента блога в YAML формате
Вместо ручного редактирования rss.xml ленты блога в формате RSS, теперь редактирую ленту в формате YAML.
В файле index.yaml
содержится вся лента блога, при изменении этого файла происходит публикация последних 10 записей в rss.xml и остальных записей в archive.xml
.
YAML это удобный для чтения и написания формат структурированных данных, который можно преобразовать в тот же XML, либо обрабатывать напрямую.
Лента на YAML по отношению к ленте в RSS формате, это как Markdown по отношению к HTML, печатать текст в этом формате гораздо удобнее, чем на более машинном XML.
Сравнительный пример одной и той же записи:
В XML формате:
<item>
<pubDate>Mon, 30 Jul 2012 23:18:42 +0400</pubDate>
<title>Подставка для рук в CatBoard</title>
<description><![CDATA[<p>Так как блоки клавиатуры расположены с некоторым расстоянием друг от друга, и на небольшом нетбуке руки вываливаются за нетбуковскую подставку для рук, то было решено сделать подставку в самой клавиатуре...</p>
<p><img src="http://ibnteo.klava.org/keyboard/catboard44_s.jpg"/></p>]]></description>
<link>http://ibnteo.klava.org/keyboard/catboard44</link>
<guid isPermaLink="true">http://ibnteo.klava.org/keyboard/catboard44</guid>
<category>keyboard</category>
<category>catboard</category>
<category>fablab</category>
</item>
В YAML формате:
-
date: 30.07.2012 23:18:42
title: Подставка для рук в CatBoard
description: |
<p>Так как блоки клавиатуры расположены с некоторым расстоянием друг от друга, и на небольшом нетбуке руки вываливаются за нетбуковскую подставку для рук, то было решено сделать подставку в самой клавиатуре...</p>
<p><img src="http://ibnteo.klava.org/keyboard/catboard44_s.jpg"/></p>
link: keyboard/catboard44
category: keyboard, catboard, fablab
Здесь не полностью автоматическое преобразование, мой скрипт после получения через библиотеку данных в виде массива, преобразовывает дату из свободного формата в необходимый для RSS формат RFC-2822, добавляет тег <guid>
, сам разбивает теги, перечисленные через запятую.
Обработчиков YAML формата достаточно много, для многих языков программирования, список есть на официальном сайте - yaml.org в блоке Projects.
П.С.: список тегов можно поместить в квадратные скобки, и тогда они будут автоматически укладываться в массив:
category: [keyboard, catboard, fablab]