summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/01_raw/tree.xsl51
-rw-r--r--source/02_data/branches.xsl84
-rw-r--r--source/02_data/leaves.xsl34
-rw-r--r--source/03_meta/meta.xsl29
-rw-r--r--source/99_result/branches.xsl61
-rw-r--r--source/99_result/leaves.xsl37
-rw-r--r--source/99_result/main.css73
-rw-r--r--source/99_result/media/favicon.icobin0 -> 1150 bytes
8 files changed, 369 insertions, 0 deletions
diff --git a/source/01_raw/tree.xsl b/source/01_raw/tree.xsl
new file mode 100644
index 0000000..f54157b
--- /dev/null
+++ b/source/01_raw/tree.xsl
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xalan="http://xml.apache.org/xalan"
+ xmlns:InputXSLT="function.inputxslt.application"
+ exclude-result-prefixes="xalan InputXSLT"
+>
+
+<xsl:include href="[utility/formatter.xsl]"/>
+<xsl:include href="[utility/datasource.xsl]"/>
+
+<xsl:variable name="meta">
+ <datasource type="main" mode="xpath" source="$source_tree/directory[@name = '00_content']/directory" target="files"/>
+ <target mode="plain" value="tree.xml"/>
+</xsl:variable>
+
+<xsl:template match="@*|node()" mode="tree">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|node()"/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="file[@extension = '.md']" mode="tree">
+ <xsl:variable name="content">
+ <xsl:call-template name="formatter">
+ <xsl:with-param name="source" select="InputXSLT:read-file(./full)/text()"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <leaf name="{@name}">
+ <title>
+ <xsl:value-of select="xalan:nodeset($content)/h1"/>
+ </title>
+ <content>
+ <xsl:copy-of select="xalan:nodeset($content)/*[name() != 'h1']"/>
+ </content>
+ </leaf>
+</xsl:template>
+
+<xsl:template match="directory" mode="tree">
+ <branch name="{@name}">
+ <xsl:apply-templates select="node()" mode="tree"/>
+ </branch>
+</xsl:template>
+
+<xsl:template match="files/directory[@name = 'tree']">
+ <xsl:apply-templates select="node()" mode="tree"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/source/02_data/branches.xsl b/source/02_data/branches.xsl
new file mode 100644
index 0000000..ce661cc
--- /dev/null
+++ b/source/02_data/branches.xsl
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xalan="http://xml.apache.org/xalan"
+ xmlns:InputXSLT="function.inputxslt.application"
+ exclude-result-prefixes="xalan InputXSLT"
+>
+
+<xsl:include href="[utility/datasource.xsl]"/>
+
+<xsl:variable name="meta">
+ <datasource type="main" mode="full" source="01_raw/tree.xml" target="tree"/>
+ <target mode="plain" value="branches.xml"/>
+</xsl:variable>
+
+<xsl:template match="branch | leaf" mode="serialize">
+ <xsl:apply-templates select="parent::branch" mode="serialize"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="@name"/>
+</xsl:template>
+
+<xsl:template match="@*|node()" mode="include">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|node()" mode="include"/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="leaf" mode="include">
+ <xsl:apply-templates select="node()" mode="include"/>
+</xsl:template>
+
+<xsl:template match="leaf" mode="digest">
+ <node name="{@name}">
+ <title>
+ <xsl:value-of select="title"/>
+ </title>
+ <digest size="{string-length(content/p[normalize-space(.)][1])}">
+ <xsl:copy-of select="content/p[normalize-space(.)][1]/node()"/>
+ </digest>
+ </node>
+</xsl:template>
+
+<xsl:template match="leaf">
+ <xsl:variable name="name" select="@name"/>
+
+ <xsl:if test="not(preceding-sibling::branch[@name = $name])">
+ <xsl:apply-templates select="." mode="digest"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="branch" mode="digest">
+ <xsl:variable name="name" select="@name"/>
+
+ <xsl:apply-templates select="following-sibling::leaf[@name = $name]" mode="digest"/>
+</xsl:template>
+
+<xsl:template match="branch">
+ <xsl:variable name="path">
+ <xsl:apply-templates select="." mode="serialize"/>
+ </xsl:variable>
+
+ <entry handle="{$path}">
+ <xsl:variable name="name" select="@name"/>
+
+ <payload>
+ <xsl:apply-templates select="following-sibling::leaf[@name = $name]" mode="include"/>
+ </payload>
+
+ <branches>
+ <xsl:apply-templates select="branch" mode="digest"/>
+ </branches>
+
+ <leaves>
+ <xsl:apply-templates select="leaf"/>
+ </leaves>
+ </entry>
+</xsl:template>
+
+<xsl:template match="tree">
+ <xsl:apply-templates select="//branch"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/source/02_data/leaves.xsl b/source/02_data/leaves.xsl
new file mode 100644
index 0000000..81ba8f3
--- /dev/null
+++ b/source/02_data/leaves.xsl
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xalan="http://xml.apache.org/xalan"
+ xmlns:InputXSLT="function.inputxslt.application"
+ exclude-result-prefixes="xalan InputXSLT"
+>
+
+<xsl:include href="[utility/datasource.xsl]"/>
+
+<xsl:variable name="meta">
+ <datasource type="main" mode="full" source="01_raw/tree.xml" target="tree"/>
+ <target mode="plain" value="leaves.xml"/>
+</xsl:variable>
+
+<xsl:template match="branch | leaf" mode="serialize">
+ <xsl:apply-templates select="parent::branch" mode="serialize"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="@name"/>
+</xsl:template>
+
+<xsl:template match="tree//leaf[not(preceding-sibling::branch[@name = current()/@name])]">
+ <xsl:variable name="path">
+ <xsl:apply-templates select="." mode="serialize"/>
+ </xsl:variable>
+
+ <entry handle="{$path}">
+ <xsl:copy-of select="title"/>
+ <xsl:copy-of select="content"/>
+ </entry>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/source/03_meta/meta.xsl b/source/03_meta/meta.xsl
new file mode 100644
index 0000000..c2bd107
--- /dev/null
+++ b/source/03_meta/meta.xsl
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+>
+
+<xsl:include href="[utility/datasource.xsl]"/>
+
+<xsl:variable name="meta">
+ <datasource type="main" mode="full" source="00_content/meta.xml" target="meta"/>
+ <datasource type="support" mode="full" source="02_data/leaves.xml" target="leaves"/>
+ <target mode="plain" value="meta.xml"/>
+</xsl:variable>
+
+<xsl:template match="meta">
+ <xsl:copy-of select="*"/>
+</xsl:template>
+
+<xsl:template match="leaves/entry">
+ <entry handle="{@handle}"/>
+</xsl:template>
+
+<xsl:template match="leaves">
+ <leaves>
+ <xsl:apply-templates select="entry"/>
+ </leaves>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/source/99_result/branches.xsl b/source/99_result/branches.xsl
new file mode 100644
index 0000000..86467ef
--- /dev/null
+++ b/source/99_result/branches.xsl
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet
+ version="1.0"
+ xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xalan="http://xml.apache.org/xalan"
+ exclude-result-prefixes="xalan"
+>
+
+<xsl:include href="[utility/master.xsl]"/>
+<xsl:include href="[utility/xhtml.xsl]"/>
+
+<xsl:variable name="meta">
+ <datasource type="main" mode="iterate" source="02_data/branches.xml" target="branch"/>
+ <datasource type="support" mode="full" source="03_meta/meta.xml" target="meta"/>
+ <target mode="xpath" value="concat($datasource/branch/entry/@handle, '/index.html')"/>
+</xsl:variable>
+
+<xsl:template name="title-text">
+ <xsl:value-of select="/datasource/branch/entry/@handle"/>
+</xsl:template>
+
+<xsl:template match="branch/entry">
+ <div class="article">
+ <h2>
+ <xsl:text>» </xsl:text>
+ <a href="{@handle}">
+ <xsl:value-of select="payload/title"/>
+ </a>
+ </h2>
+ <p class="info"/>
+
+ <xsl:apply-templates select="payload/content/node()" mode="xhtml"/>
+ </div>
+
+ <div class="columns">
+ <ul class="prettylist">
+ <xsl:apply-templates select="branches/node">
+ <xsl:sort select="digest/@size" data-type="number" order="descending"/>
+ </xsl:apply-templates>
+
+ <xsl:apply-templates select="leaves/node">
+ <xsl:sort select="digest/@size" data-type="number" order="descending"/>
+ </xsl:apply-templates>
+ </ul>
+ </div>
+</xsl:template>
+
+<xsl:template match="entry/*/node">
+ <li>
+ <em>»</em>
+ <a href="{@name}/index.html">
+ <strong><xsl:value-of select="title"/></strong>
+ <p>
+ <xsl:apply-templates select="digest/node()" mode="xhtml"/>
+ </p>
+ </a>
+ </li>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/source/99_result/leaves.xsl b/source/99_result/leaves.xsl
new file mode 100644
index 0000000..3f22aa1
--- /dev/null
+++ b/source/99_result/leaves.xsl
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet
+ version="1.0"
+ xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xalan="http://xml.apache.org/xalan"
+ exclude-result-prefixes="xalan"
+>
+
+<xsl:include href="[utility/master.xsl]"/>
+<xsl:include href="[utility/xhtml.xsl]"/>
+
+<xsl:variable name="meta">
+ <datasource type="main" mode="iterate" source="02_data/leaves.xml" target="leaf"/>
+ <datasource type="support" mode="full" source="03_meta/meta.xml" target="meta"/>
+ <target mode="xpath" value="concat($datasource/leaf/entry/@handle, '/index.html')"/>
+</xsl:variable>
+
+<xsl:template name="title-text">
+ <xsl:value-of select="/datasource/leaf/entry/@handle"/>
+</xsl:template>
+
+<xsl:template match="leaf/entry">
+ <div class="article">
+ <h2>
+ <xsl:text>» </xsl:text>
+ <a href="{@handle}">
+ <xsl:value-of select="title"/>
+ </a>
+ </h2>
+ <p class="info"/>
+
+ <xsl:apply-templates select="content/node()" mode="xhtml"/>
+ </div>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/source/99_result/main.css b/source/99_result/main.css
new file mode 100644
index 0000000..ec95157
--- /dev/null
+++ b/source/99_result/main.css
@@ -0,0 +1,73 @@
+body{margin:0;padding:0;font:1em sans-serif;color:#272828;word-wrap:break-word}
+a, a:visited{text-decoration:underline;color:#272828}
+a:hover{color:black}
+h1, h2{margin:0;color:#272828;font-weight:bold}
+h1 a, h2 a{text-decoration:none}
+p{margin:0 0 .5em 0;text-align:justify;line-height:1.75em}
+ul{margin:0;padding:0;list-style:none}
+blockquote{border-left:.4em solid #e3e8e8;margin-left:0;padding-left:1em}
+pre{font-family:monospace;padding:1em;border-radius:.75em;color:#f8f8f2;background:#272822;white-space:pre-wrap}
+code{font-family:monospace;margin:0 .1em;padding:0 .5em;border:.1em solid #e3e8e8;background-color:#f8f8f8;border-radius:.3em}
+.full{width:100%}
+.center{width:45em;margin:0 auto;overflow:hidden}
+.border_bottom{border-bottom:.3em solid #e3e8e8}
+.border_top{border-top:.3em solid #e3e8e8}
+#navigation{padding:2em 0 0 0}
+#navigation h1{font-size:1.1em;line-height:1.5em;font-weight:bold;float:left;padding:0 .2em 0 0;margin:0}
+#navigation ul{float:right;font-size:1.1em}
+#content p{margin-bottom:.7em;text-align:justify}
+#content h2{font-size:1.4em;margin:0;color:#F80}
+#content h2 a, h2 span{font-size:.8em;text-decoration:none !important;color:#272828;font-weight:normal;display:inline-block;vertical-align:middle;max-width:95%}
+#content h2 a:hover{text-decoration:underline !important}
+#content h3, #content h4{font-size:1.05em;font-weight:normal;padding-bottom:.2em;margin:.8em 0 .5em 0;border-bottom:.1em solid #e3e8e8}
+#content .article{border-bottom:.3em dotted #e3e8e8;padding-bottom:.5em;margin-top:1em;text-align:justify}
+#content .article:last-child{border:none}
+#content .article a{text-decoration:underline;color:#272828}
+#content .article a:hover{color:black}
+#content .article ul{float:none;margin-left:2em;text-align:left}
+#content .article ul li{list-style-type:circle;float:none}
+#content .article ul li a{background:0}
+#content .article .info{font-size:.9em;margin-bottom:.5em;margin-left:1.4em}
+#content .article .info a{text-decoration:none;color:#272828}
+#content .article .info a:hover{text-decoration:underline}
+#content .article table{border-collapse:collapse;border-left:.4em solid #e3e8e8;margin:1em}
+#content .article table thead{border-bottom:.1em solid #272828}
+#content .article table tr{border-bottom:.1em solid #272828}
+#content .article table tr:last-child{border-bottom:0}
+#content .article table tr th{font-weight:normal;padding:.2em 1em}
+#content .article table tr td{padding:.2em 1em}
+#content .footnotes {border-top:.3em dotted #e3e8e8}
+#content img{padding:.2em;border:.1em solid #e3e8e8;display:block;margin-left:auto;margin-right:auto;max-width:95%}
+#content img.clear{border:0;max-width:100%}
+#content p.math{padding:0.5em;line-height:0;text-align:center}
+#content span.math{line-height:0}
+#footer{padding-top:.3em}
+#footer a{text-decoration:none;color:#272828}
+#footer a:hover{text-decoration:underline}
+#footer ul{float:right;padding:0}
+.columns{column-count:2;-moz-column-count:2;-webkit-column-count:2;column-gap:1em;-moz-column-gap:1em;-webkit-column-gap:1em}
+.column{-webkit-column-break-inside:avoid;break-inside:avoid-column;overflow:hidden}
+.buttonlist{overflow:hidden}
+.buttonlist li{float:left;background:#e3e8e8;border-radius:.3em;padding:.2em;margin:0 0 .2em .2em}
+.buttonlist li a{text-decoration:none;color:#272828;}
+.buttonlist li a:hover{text-decoration:underline}
+.prettylist li{display:inline-block;padding:.5em 0}
+.prettylist li a{margin-left:.2em;color:#272828;text-decoration:none}
+.prettylist li a:hover{text-decoration:underline}
+.prettylist li p{margin:0 !important}
+.prettylist li em{font-style:normal;font-size:1.4em;color:#F80}
+.prettylist li p em{font-style:italic;color:#272828;font-size:1em}
+.menuhead{border-bottom:0.1em solid #e3e8e8;overflow:hidden;padding:0;margin-top:0.8em}
+.menuhead h3{float:left;padding:0.4em 0 0 0;margin:0 !important;border:none !important}
+.menuhead ul{float:right;padding:0;font-size:1.1em}
+@media screen and (max-width:46em){
+ #content .article h2 a{max-width:90%}
+ #navigation{padding:.3em 0 0 0}
+ .center{width:98%}
+ .columns{column-count:1;-moz-column-count:1;-webkit-column-count:1}
+ .column{width:100%}
+}
+@media screen and (max-width:30em){
+ #navigation h1{float:none}
+ #navigation ul{float:none}
+}
diff --git a/source/99_result/media/favicon.ico b/source/99_result/media/favicon.ico
new file mode 100644
index 0000000..f5a9ac4
--- /dev/null
+++ b/source/99_result/media/favicon.ico
Binary files differ