<div dir="ltr">Hey John,<br><br>I noticed that your code is using the Syck library for Yaml. How were you able to get it to deal with Unicode characters? I just wrote a new yaml library based on libyaml if you want to give it a shot (yaml on hackage). It doesn&#39;t support aliases, but is otherwise feature complete.<br>
<br>Michael<br><br><div class="gmail_quote">On Mon, Aug 3, 2009 at 7:12 PM, John MacFarlane <span dir="ltr">&lt;<a href="mailto:jgm@berkeley.edu">jgm@berkeley.edu</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Thanks. I&#39;ll put a note to this effect in the README.<br>
<br>
John<br>
<br>
+++ Jinjing Wang [Aug 03 09 18:17 ]:<br>
<div><div></div><div class="h5">&gt; It&#39;s possible to serve the generated site with maid, in case apache is<br>
&gt; not available:<br>
&gt;<br>
&gt; cabal update<br>
&gt; cabal install maid<br>
&gt;<br>
&gt; yst create testsite<br>
&gt; cd testsite<br>
&gt; yst<br>
&gt;<br>
&gt; cd site<br>
&gt; maid<br>
&gt;<br>
&gt; now goto <a href="http://localhost:3000/" target="_blank">http://localhost:3000/</a><br>
&gt;<br>
&gt; On Mon, Aug 3, 2009 at 9:05 AM, John MacFarlane&lt;<a href="mailto:jgm@berkeley.edu">jgm@berkeley.edu</a>&gt; wrote:<br>
&gt; &gt; I&#39;m pleased to announce the release of yst, now available on HackageDB.<br>
&gt; &gt; yst generates static websites from YAML or CSV data files and<br>
&gt; &gt; StringTemplates. This approach combines the speed, security, and ease of<br>
&gt; &gt; deployment of a static website with the flexibility and maintainability<br>
&gt; &gt; of a dynamic site that separates presentation and data.<br>
&gt; &gt;<br>
&gt; &gt; The easiest way to get a feel for yst is to try it:<br>
&gt; &gt;<br>
&gt; &gt; cabal update<br>
&gt; &gt; cabal install yst<br>
&gt; &gt; yst create testsite<br>
&gt; &gt; cd testsite<br>
&gt; &gt; yst<br>
&gt; &gt;<br>
&gt; &gt; yst attempts to fill a niche between two kinds of site creation tools.<br>
&gt; &gt; On the one hand you have simple static site generators like webgen,<br>
&gt; &gt; webby, nanoc, and my old custom system using make and pandoc. On the<br>
&gt; &gt; other hand, you have dynamic web frameworks like rails and django.<br>
&gt; &gt; For my own smallish websites, I found that the dynamic frameworks were<br>
&gt; &gt; overkill. Nobody but me was going to edit the pages, and I didn&#39;t<br>
&gt; &gt; want the trouble of writing and deploying a dynamic site, setting up<br>
&gt; &gt; a web server, and administering a database. A static site would be<br>
&gt; &gt; faster, easier to deploy, and more secure. But the dynamic frameworks<br>
&gt; &gt; offered one thing that the static site generators did not: an easy way<br>
&gt; &gt; to separate data from presentation. This was becoming increasingly<br>
&gt; &gt; important to me as I found myself constantly updating the same<br>
&gt; &gt; information (say, publication data for a paper) in multiple places (say,<br>
&gt; &gt; a LaTeX CV and a differently formatted web listing of papers).<br>
&gt; &gt;<br>
&gt; &gt; What I wanted was a site generation tool that used YAML text files<br>
&gt; &gt; as a database and allowed different kinds of documents to be produced<br>
&gt; &gt; from the same data.  I couldn&#39;t find anything that did just what I<br>
&gt; &gt; wanted, so I wrote yst. By way of illustration, here are the build<br>
&gt; &gt; instructions for HTML and LaTeX versions of a CV, plus a web page with a<br>
&gt; &gt; list of papers:<br>
&gt; &gt;<br>
&gt; &gt; - url: cv.html<br>
&gt; &gt;  title: CV<br>
&gt; &gt;  template: <a href="http://cv.st" target="_blank">cv.st</a><br>
&gt; &gt;  data_common:  &amp;cvdata<br>
&gt; &gt;    contact: from contact.yaml<br>
&gt; &gt;    jobsbyemployer: from jobs.yaml order by start group by employer<br>
&gt; &gt;    degrees: from degrees.yaml order by year desc<br>
&gt; &gt;    awards: from awards.yaml order by year desc group by title<br>
&gt; &gt;    papers: from papers.yaml order by year desc where (not (type = &#39;review&#39;))<br>
&gt; &gt;    reviews: from papers.yaml order by year desc where type = &#39;review&#39;<br>
&gt; &gt;    talks: from talks.yaml where date &lt; &#39;2009-09-01&#39; order by date desc group by title<br>
&gt; &gt;    dissertations: from dissertations.yaml order by role then year group by role<br>
&gt; &gt;    theses: from theses.yaml order by year then student<br>
&gt; &gt;    courses: from courses.yaml order by number group by title<br>
&gt; &gt;  data:<br>
&gt; &gt;    &lt;&lt;:  *cvdata<br>
&gt; &gt;    html: yes<br>
&gt; &gt;<br>
&gt; &gt; - url: cv.tex<br>
&gt; &gt;  title: CV<br>
&gt; &gt;  inmenu: no<br>
&gt; &gt;  template: <a href="http://cv.st" target="_blank">cv.st</a><br>
&gt; &gt;  layout: <a href="http://layout.tex.st" target="_blank">layout.tex.st</a><br>
&gt; &gt;  data:<br>
&gt; &gt;    &lt;&lt;:  *cvdata<br>
&gt; &gt;    html: yes<br>
&gt; &gt;<br>
&gt; &gt; - url: papers.html<br>
&gt; &gt;  title: Papers<br>
&gt; &gt;  template: <a href="http://papers.st" target="_blank">papers.st</a><br>
&gt; &gt;  data:<br>
&gt; &gt;    papersbyyear:  from papers.yaml order by year desc then title group by year<br>
&gt; &gt;<br>
&gt; &gt; yst&#39;s query language is limited, and there are lots of things you can<br>
&gt; &gt; do with a full-fledged database that you can&#39;t do with yst. But yst<br>
&gt; &gt; is ideal, I think, for small to medium data-driven sites that are<br>
&gt; &gt; maintained by a single person who likes working with plain text. It<br>
&gt; &gt; scratched my itch, anyway, and I release it in case anyone else has the<br>
&gt; &gt; same itch.<br>
&gt; &gt;<br>
&gt; &gt; Code, documentation, and bug reports:  <a href="http://github.com/jgm/yst/tree/master" target="_blank">http://github.com/jgm/yst/tree/master</a><br>
&gt; &gt;<br>
&gt; &gt; John<br>
&gt; &gt;<br>
&gt; &gt; _______________________________________________<br>
&gt; &gt; Haskell-Cafe mailing list<br>
&gt; &gt; <a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
&gt; &gt; <a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
&gt; &gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; jinjing<br>
&gt; _______________________________________________<br>
&gt; Haskell-Cafe mailing list<br>
&gt; <a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
&gt; <a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
</div></div></blockquote></div><br></div>