aboutsummaryrefslogtreecommitdiff
path: root/source/99_result/timeline.xsl
diff options
context:
space:
mode:
authorAdrian Kummerlaender2014-10-24 18:59:25 +0200
committerAdrian Kummerlaender2014-10-24 18:59:25 +0200
commitee1786edd7972f9ff55fc8abb90a6d981d66998e (patch)
treec8776d08ded942982f6bc40438f1dffbeef25361 /source/99_result/timeline.xsl
parentc3c2a4f161ab168debb64ed8a99dc1e4e3403364 (diff)
downloadOverview-ee1786edd7972f9ff55fc8abb90a6d981d66998e.tar
Overview-ee1786edd7972f9ff55fc8abb90a6d981d66998e.tar.gz
Overview-ee1786edd7972f9ff55fc8abb90a6d981d66998e.tar.bz2
Overview-ee1786edd7972f9ff55fc8abb90a6d981d66998e.tar.lz
Overview-ee1786edd7972f9ff55fc8abb90a6d981d66998e.tar.xz
Overview-ee1786edd7972f9ff55fc8abb90a6d981d66998e.tar.zst
Overview-ee1786edd7972f9ff55fc8abb90a6d981d66998e.zip
Added timeline ATOM feed and removed XHTML target
* moved repository feeds to `repository` directory * replaced paginated XHTML timeline target with and ATOM feed ** removed `paginated_timeline.xsl` transformation including the `04_meta` level ** removed CSS and master stylesheets * added title, url and commit count meta data to `meta.xml` * expanded ATOM feed URLs * timeline feed has an upper limit of `commit_count` items ** repository feeds have the same limit because only `commit_count` commits of every repository are fetched in the first place
Diffstat (limited to 'source/99_result/timeline.xsl')
-rw-r--r--source/99_result/timeline.xsl101
1 files changed, 101 insertions, 0 deletions
diff --git a/source/99_result/timeline.xsl b/source/99_result/timeline.xsl
new file mode 100644
index 0000000..4793e8c
--- /dev/null
+++ b/source/99_result/timeline.xsl
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet
+ version="1.0"
+ xmlns="http://www.w3.org/2005/Atom"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+>
+
+<xsl:output
+ method="xml"
+ omit-xml-declaration="no"
+ encoding="UTF-8"
+ indent="no"
+/>
+
+<xsl:include href="[utility/xhtml.xsl]"/>
+
+<xsl:variable name="meta">
+ <datasource type="main" mode="full" source="03_merge/timeline.xml" target="timeline"/>
+ <datasource type="support" mode="full" source="02_augment/commits.xml" target="repositories"/>
+ <datasource type="support" mode="full" source="00_content/meta.xml" target="meta"/>
+ <target mode="plain" value="timeline.xml"/>
+</xsl:variable>
+
+<xsl:variable name="root" select="/datasource"/>
+<xsl:variable name="url" select="concat($root/meta/url, '/timeline.xml')"/>
+<xsl:variable name="latest" select="$root/repositories/entry[
+ @handle = $root/timeline/commit[1]/@repository
+]/commit[
+ @hash = $root/timeline/commit[1]/@hash
+]"/>
+
+<xsl:template name="get_commit">
+ <xsl:param name="repository"/>
+ <xsl:param name="hash"/>
+
+ <xsl:variable name="commit" select="$root/repositories/entry[
+ @handle = $repository
+ ]/commit[
+ @hash = $hash
+ ]"/>
+
+ <entry xmlns="http://www.w3.org/2005/Atom">
+ <id>
+ <xsl:value-of select="$hash"/>
+ </id>
+ <title>
+ <xsl:value-of select="$commit/message/h1"/>
+ </title>
+ <link rel="alternate" title="{@hash}">
+ <xsl:attribute name="href">
+ <xsl:value-of select="concat(
+ $root/meta/mirror/repository, '/',
+ $repository, '/',
+ $root/meta/mirror/commit,
+ $hash
+ )"/>
+ </xsl:attribute>
+ </link>
+ <content type="xhtml">
+ <div xmlns="http://www.w3.org/1999/xhtml">
+ <xsl:apply-templates select="$commit/message/*[name() != 'h1']" mode="xhtml"/>
+ </div>
+ </content>
+ <updated>
+ <xsl:value-of select="$commit/date"/>
+ <xsl:text>T</xsl:text>
+ <xsl:value-of select="$commit/date/@time"/>
+ <xsl:text>:00+02:00</xsl:text>
+ </updated>
+ </entry>
+</xsl:template>
+
+<xsl:template match="datasource">
+ <feed>
+ <link href="{$url}" rel="self" title="{$root/meta/title}" type="application/atom+xml"/>
+
+ <id>
+ <xsl:value-of select="$url"/>
+ </id>
+ <title>
+ <xsl:value-of select="$root/meta/title"/>
+ </title>
+ <updated>
+ <xsl:value-of select="$latest/date"/>
+ <xsl:text>T</xsl:text>
+ <xsl:value-of select="$latest/date/@time"/>
+ <xsl:text>:00+02:00</xsl:text>
+ </updated>
+
+ <xsl:apply-templates select="timeline/commit[position() &lt;= $root/meta/commit_count]"/>
+ </feed>
+</xsl:template>
+
+<xsl:template match="timeline/commit">
+ <xsl:call-template name="get_commit">
+ <xsl:with-param name="repository" select="@repository"/>
+ <xsl:with-param name="hash" select="@hash"/>
+ </xsl:call-template>
+</xsl:template>
+
+</xsl:stylesheet>