summaryrefslogtreecommitdiff
path: root/website/manual/Readers.html
diff options
context:
space:
mode:
Diffstat (limited to 'website/manual/Readers.html')
-rw-r--r--website/manual/Readers.html181
1 files changed, 181 insertions, 0 deletions
diff --git a/website/manual/Readers.html b/website/manual/Readers.html
new file mode 100644
index 0000000..b0e2f18
--- /dev/null
+++ b/website/manual/Readers.html
@@ -0,0 +1,181 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2015 David Thompson
+
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<!-- Created by GNU Texinfo 6.0, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>Haunt Reference Manual: Readers</title>
+
+<meta name="description" content="Haunt Reference Manual: Readers">
+<meta name="keywords" content="Haunt Reference Manual: Readers">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Programming-Interface.html#Programming-Interface" rel="up" title="Programming Interface">
+<link href="Pages.html#Pages" rel="next" title="Pages">
+<link href="Posts.html#Posts" rel="prev" title="Posts">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style: oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space: nowrap}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: serif; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<a name="Readers"></a>
+<div class="header">
+<p>
+Next: <a href="Pages.html#Pages" accesskey="n" rel="next">Pages</a>, Previous: <a href="Posts.html#Posts" accesskey="p" rel="prev">Posts</a>, Up: <a href="Programming-Interface.html#Programming-Interface" accesskey="u" rel="up">Programming Interface</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<a name="Readers-1"></a>
+<h3 class="section">5.3 Readers</h3>
+
+<div class="example">
+<pre class="example">(use-modules (haunt reader))
+</pre></div>
+
+<p>The purpose of a reader is to translate the markup within a post file
+into an SXML tree representing the HTML structure and associate some
+metadata with it.
+</p>
+<dl>
+<dt><a name="index-make_002dreader"></a>Scheme Procedure: <strong>make-reader</strong> <em><var>matcher</var> <var>proc</var></em></dt>
+<dd><p>Create a new reader. The reader is to be activated when
+<var>matcher</var>, a procedure that accepts a file name as its only
+argument, returns <code>#t</code>. When a post file matches, the procedure
+<var>proc</var>, which also accepts a file name as its only argument, reads
+the contents and returns a post object (see <a href="Posts.html#Posts">Posts</a>).
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-reader_003f"></a>Scheme Procedure: <strong>reader?</strong> <em><var>object</var></em></dt>
+<dd><p>Return <code>#t</code> if <var>object</var> is a reader.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-reader_002dmatcher"></a>Scheme Procedure: <strong>reader-matcher</strong> <em><var>reader</var></em></dt>
+<dd><p>Return the match procedure for <var>reader</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-reader_002dmatcher-1"></a>Scheme Procedure: <strong>reader-matcher</strong> <em><var>reader</var></em></dt>
+<dd><p>Return the read procedure for <var>reader</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-reader_002dmatch_003f"></a>Scheme Procedure: <strong>reader-match?</strong> <em><var>reader</var> <var>file-name</var></em></dt>
+<dd><p>Return <code>#t</code> if <var>file-name</var> is a file supported by
+<var>reader</var>.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-read_002dpost"></a>Scheme Procedure: <strong>read-post</strong> <em><var>reader</var> <var>file-name</var> [<var>default-metadata</var>]</em></dt>
+<dd><p>Read a post object from <var>file-name</var> using <var>reader</var>, merging
+its metadata with <var>default-metadata</var>, or the empty list if not
+specified.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-read_002dposts"></a>Scheme Procedure: <strong>read-posts</strong> <em><var>directory</var> <var>keep?</var> <var>readers</var> [<var>default-metadata</var>]</em></dt>
+<dd><p>Read all of the files in <var>directory</var> that match <var>keep?</var> as
+post objects. The <var>readers</var> list must contain a matching reader
+for every post.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-make_002dfile_002dextension_002dmatcher"></a>Scheme Procedure: <strong>make-file-extension-matcher</strong> <em><var>ext</var></em></dt>
+<dd><p>Create a procedure that returns <code>#t</code> when a file name ends with
+&ldquo;.ext&rdquo;.
+</p></dd></dl>
+
+<dl>
+<dt><a name="index-sxml_002dreader"></a>Scheme Procedure: <strong>sxml-reader</strong></dt>
+<dd><p>A basic reader for posts written as Scheme code that evaluates to an
+an association list. The special key <code>content</code> contains the post
+body as an SXML tree.
+</p>
+<p>Example:
+</p>
+<div class="example">
+<pre class="example">(use-modules (haunt utils))
+
+`((title . &quot;Hello, world!&quot;)
+ (date . ,(string-&gt;date* &quot;2015-04-10 23:00&quot;))
+ (tags &quot;foo&quot; &quot;bar&quot;)
+ (summary . &quot;Just a test&quot;)
+ (content
+ ((h2 &quot;Hello!&quot;)
+ (p &quot;This is Haunt. A static site generator for GNU Guile.&quot;))))
+</pre></div>
+
+</dd></dl>
+
+<dl>
+<dt><a name="index-html_002dreader"></a>Scheme Procedure: <strong>html-reader</strong></dt>
+<dd><p>A basic reader for posts written in plain ol&rsquo; HTML. Metadata is
+encoded as the <code>key: value</code> pairs, one per line, at the beginning
+of the file. A line with the <code>---</code> sentinel marks the end of the
+metadata section and the rest of the file is encoded as HTML.
+</p>
+<p>Example:
+</p>
+<div class="example">
+<pre class="example">title: A Foo Walks Into a Bar
+date: 2015-04-11 20:00
+tags: bar
+---
+&lt;p&gt;
+ This is an example using raw HTML, because Guile doesn't have a
+ Markdown parser.
+&lt;/p&gt;
+</pre></div>
+
+</dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Pages.html#Pages" accesskey="n" rel="next">Pages</a>, Previous: <a href="Posts.html#Posts" accesskey="p" rel="prev">Posts</a>, Up: <a href="Programming-Interface.html#Programming-Interface" accesskey="u" rel="up">Programming Interface</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>