Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions markdown/config/file-list.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
introduction
starting-out
types-and-typeclasses
syntax-in-functions
recursion
higher-order-functions
modules
making-our-own-types-and-typeclasses
input-and-output
functionally-solving-problems
functors-applicative-functors-and-monoids
a-fistful-of-monads
for-a-few-monads-more
zippers
4 changes: 4 additions & 0 deletions markdown/config/pandoc-defaults.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
from: markdown-implicit_figures
to: html
highlight-style: null
standalone: true
91 changes: 91 additions & 0 deletions markdown/config/template.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"https://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>$title$ - Learn You a Haskell for Great Good!</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<base href="">
<style type="text/css">
@import url('reset.css');
@import url('style.css');
</style>
<link rel="shortcut icon" href="assets/images/favicon.png" type="image/png">
$if(prev_filename)$
<link rel="prev" href="${prev_filename}.html">
$endif$
$if(next_filename)$
<link rel="next" href="${next_filename}.html">
$endif$
<link type="text/css" rel="stylesheet" href="sh/Styles/SyntaxHighlighter.css">
<link href="rss.php" rel="alternate" type="application/rss+xml" title="Learn You a Haskell for Great Good! feed">
</head>
<body class="introcontent">
<div class="bgwrapper">
<div id="content">
$if(footdiv)$
<div class="footdiv" style="margin-bottom:25px;">
<ul>
<li style="text-align:left">
$if(prev_filename)$
<a href="${prev_filename}.html" class="prevlink">$prev_title$</a>
$endif$
</li>
<li style="text-align:center">
<a href="chapters.html">Table of contents</a>
</li>
<li style="text-align:right">
$if(next_filename)$
<a href="${next_filename}.html" class="nxtlink">$next_title$</a>
$endif$
</li>
</ul>
</div>
$endif$
$body$
$if(footdiv)$
<div class="footdiv">
<ul>
<li style="text-align:left">
$if(prev_filename)$
<a href="$prev_filename$.html" class="prevlink">$prev_title$</a>
$endif$
</li>
<li style="text-align:center">
<a href="chapters.html">Table of contents</a>
</li>
<li style="text-align:right">
$if(next_filename)$
<a href="$next_filename$.html" class="nxtlink">$next_title$</a>
$endif$
</li>
</ul>
</div>
$endif$
$if(faq)$
<div class="footdiv">
<ul>
<li style="text-align:center">
<a href="index.html" rel="nofollow">Back</a>
</li>
</ul>
</div>
$endif$
</div>
<script type="text/javascript" src="sh/Scripts/shCore.js"></script>
<script type="text/javascript" src="shBrushHaskell.js"></script>
<script type="text/javascript" src="shBrushPlain.js"></script>
<script type="text/javascript">
dp.SyntaxHighlighter.ClipboardSwf = '/sh/Scripts/clipboard.swf';
dp.SyntaxHighlighter.HighlightAll('code', false, false, false, 1, false);
</script>
</div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-4461592-3");
pageTracker._trackPageview();
</script>
</body>
</html>
68 changes: 68 additions & 0 deletions markdown/generate.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
#!/bin/bash

mapfile -t filename <config/file-list.txt

chapterfile=generated_md/chapters.md
titlesuffix=" - Learn You a Haskell for Great Good!"

cp source_md/chapters_head.md $chapterfile

for i in ${!filename[@]}
do
sourcemd=source_md/${filename[$i]}.md

title[$i]=$(sed -n '/^# /s/# //p;' $sourcemd | sed 's/{.*//' | sed 's/ *$//g')

chnum=$(($i + 1))
if [[ $chnum -ge 10 ]];
then
sp=" "
else
sp=" "
fi

sed -n '/^#\{1,2\} /p' $sourcemd \
| sed "s/^# *\(.*[^ ]\) *{.*/$chnum.$sp[\1](${filename[$i]}.html)/" \
| sed "s/^# *\(.*[^ ]\) */$chnum.$sp[\1](${filename[$i]}.html)/" \
| sed "s/^## *\(.*[^ ]\) *{ *#\(.*\)}/ * [\1](${filename[$i]}.html\#\2)/" \
>>$chapterfile
done

for i in ${!filename[@]}
do
if (($i <= 0))
then
prev_title=
prev_filename=
else
prev=$(($i - 1))
prev_title="${title[$prev]}"
prev_filename=${filename[$prev]}
fi
if (($i >= ${#filename[@]} - 1))
then
next_title=
next_filename=
else
next=$(($i + 1))
next_title="${title[$next]}"
next_filename=${filename[$next]}
fi

pandoc -d config/pandoc-defaults.yml --template=config/template.html \
-V footdiv=true -V title="${title[$i]}" \
--metadata title="${title[$i]}$titlesuffix" \
-V prev_title="$prev_title" -V prev_filename=$prev_filename \
-V next_title="$next_title" -V next_filename=$next_filename \
-o generated_html/${filename[$i]}.html source_md/${filename[$i]}.md
done

cat source_md/chapters_foot.md >>$chapterfile

pandoc -d config/pandoc-defaults.yml --template=config/template.html \
-V title="Chapters" --metadata title="${title[$i]}$titlesuffix" \
-o generated_html/chapters.html $chapterfile

pandoc -d config/pandoc-defaults.yml --template=config/template.html \
-V faq=true -V title="FAQ" --metadata title="${title[$i]}$titlesuffix" \
-o generated_html/faq.html source_md/faq.md
Loading