Really simple RSS
Není žádný důvod, proč by váš web neměl podporovat RSS a tady vám ukážu proč.
RSS (v současnosti) znamená really simple syndication – velice jednoduchá syndikace. Název nelže, protože i když pracujete v jazyku, který umí jenom zapisovat znaky do StringBuilderu a kromě toho nezvládá nic komplikovanějšího, validní generátor RSS se stále vejde do méně než 40 řádek kódu.
class RSS(title: String, description: String, link: String) { val sb = new java.lang.StringBuilder sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n") sb.append("<rss version=\"2.0\">") sb.append("<channel>") element("title", "", title) element("description", "", description) element("link", "", link) def addItem(title: String, url: String, body: String = "") = { sb.append("<item>") element("title", "", title) element("guid", " isPermaLink=\"true\"", url) element("description", "", body) sb.append("</item>") } def result() = { sb.append("</channel>") sb.append("</rss>") sb.toString } private def element(name: String, attr: String, body: String) = { sb.append("<").append(name).append(attr).append(">") var i = 0; while (i < body.length) { body.charAt(i) match { case '&' => sb.append("&") case '>' => sb.append(">") case '<' => sb.append("<") case ch => sb.append(ch) } i += 1 } sb.append("</").append(name).append(">") } }
Nepoužívá žádnou knihovnu pro XML a s programovacím ekvivalentem provázku a naostřené plaňky je možné přidat vlastní RSS export. Použití není nic překvapivého:
val rss = new RSS("0xDEADBEEF", "programování & tak podobně", "https://deadbeef.k47.cz") rss.addItem("Really simple RSS", "https://deadbeef.k47.cz/rss.html", "<p>lorem ipsum</p>") rss.result()
Výsledný feed si můžete zkontrolovat na validátoru w3, projde bez chyb.
+1: O turbulentní historii a vývoji se píše v The Rise and Demise of RSS.