Skip to content

Commit bee6b46

Browse files
xogcoxGregory Cox
and
Gregory Cox
authored
Add markdown version (#35)
* Add markdown version * Change format to one sentence per line Co-authored-by: Gregory Cox <gcox_gcox@proton.me>
1 parent a31e7f6 commit bee6b46

38 files changed

+32641
-0
lines changed

markdown/config/file-list.txt

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
introduction
2+
starting-out
3+
types-and-typeclasses
4+
syntax-in-functions
5+
recursion
6+
higher-order-functions
7+
modules
8+
making-our-own-types-and-typeclasses
9+
input-and-output
10+
functionally-solving-problems
11+
functors-applicative-functors-and-monoids
12+
a-fistful-of-monads
13+
for-a-few-monads-more
14+
zippers

markdown/config/pandoc-defaults.yml

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
from: markdown-implicit_figures
2+
to: html
3+
highlight-style: null
4+
standalone: true

markdown/config/template.html

+91
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
2+
"https://www.w3.org/TR/html4/strict.dtd">
3+
<html>
4+
<head>
5+
<title>$title$ - Learn You a Haskell for Great Good!</title>
6+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
7+
<base href="">
8+
<style type="text/css">
9+
@import url('reset.css');
10+
@import url('style.css');
11+
</style>
12+
<link rel="shortcut icon" href="assets/images/favicon.png" type="image/png">
13+
$if(prev_filename)$
14+
<link rel="prev" href="${prev_filename}.html">
15+
$endif$
16+
$if(next_filename)$
17+
<link rel="next" href="${next_filename}.html">
18+
$endif$
19+
<link type="text/css" rel="stylesheet" href="sh/Styles/SyntaxHighlighter.css">
20+
<link href="rss.php" rel="alternate" type="application/rss+xml" title="Learn You a Haskell for Great Good! feed">
21+
</head>
22+
<body class="introcontent">
23+
<div class="bgwrapper">
24+
<div id="content">
25+
$if(footdiv)$
26+
<div class="footdiv" style="margin-bottom:25px;">
27+
<ul>
28+
<li style="text-align:left">
29+
$if(prev_filename)$
30+
<a href="${prev_filename}.html" class="prevlink">$prev_title$</a>
31+
$endif$
32+
</li>
33+
<li style="text-align:center">
34+
<a href="chapters.html">Table of contents</a>
35+
</li>
36+
<li style="text-align:right">
37+
$if(next_filename)$
38+
<a href="${next_filename}.html" class="nxtlink">$next_title$</a>
39+
$endif$
40+
</li>
41+
</ul>
42+
</div>
43+
$endif$
44+
$body$
45+
$if(footdiv)$
46+
<div class="footdiv">
47+
<ul>
48+
<li style="text-align:left">
49+
$if(prev_filename)$
50+
<a href="$prev_filename$.html" class="prevlink">$prev_title$</a>
51+
$endif$
52+
</li>
53+
<li style="text-align:center">
54+
<a href="chapters.html">Table of contents</a>
55+
</li>
56+
<li style="text-align:right">
57+
$if(next_filename)$
58+
<a href="$next_filename$.html" class="nxtlink">$next_title$</a>
59+
$endif$
60+
</li>
61+
</ul>
62+
</div>
63+
$endif$
64+
$if(faq)$
65+
<div class="footdiv">
66+
<ul>
67+
<li style="text-align:center">
68+
<a href="index.html" rel="nofollow">Back</a>
69+
</li>
70+
</ul>
71+
</div>
72+
$endif$
73+
</div>
74+
<script type="text/javascript" src="sh/Scripts/shCore.js"></script>
75+
<script type="text/javascript" src="shBrushHaskell.js"></script>
76+
<script type="text/javascript" src="shBrushPlain.js"></script>
77+
<script type="text/javascript">
78+
dp.SyntaxHighlighter.ClipboardSwf = '/sh/Scripts/clipboard.swf';
79+
dp.SyntaxHighlighter.HighlightAll('code', false, false, false, 1, false);
80+
</script>
81+
</div>
82+
<script type="text/javascript">
83+
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
84+
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
85+
</script>
86+
<script type="text/javascript">
87+
var pageTracker = _gat._getTracker("UA-4461592-3");
88+
pageTracker._trackPageview();
89+
</script>
90+
</body>
91+
</html>

markdown/generate.sh

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
#!/bin/bash
2+
3+
mapfile -t filename <config/file-list.txt
4+
5+
chapterfile=generated_md/chapters.md
6+
titlesuffix=" - Learn You a Haskell for Great Good!"
7+
8+
cp source_md/chapters_head.md $chapterfile
9+
10+
for i in ${!filename[@]}
11+
do
12+
sourcemd=source_md/${filename[$i]}.md
13+
14+
title[$i]=$(sed -n '/^# /s/# //p;' $sourcemd | sed 's/{.*//' | sed 's/ *$//g')
15+
16+
chnum=$(($i + 1))
17+
if [[ $chnum -ge 10 ]];
18+
then
19+
sp=" "
20+
else
21+
sp=" "
22+
fi
23+
24+
sed -n '/^#\{1,2\} /p' $sourcemd \
25+
| sed "s/^# *\(.*[^ ]\) *{.*/$chnum.$sp[\1](${filename[$i]}.html)/" \
26+
| sed "s/^# *\(.*[^ ]\) */$chnum.$sp[\1](${filename[$i]}.html)/" \
27+
| sed "s/^## *\(.*[^ ]\) *{ *#\(.*\)}/ * [\1](${filename[$i]}.html\#\2)/" \
28+
>>$chapterfile
29+
done
30+
31+
for i in ${!filename[@]}
32+
do
33+
if (($i <= 0))
34+
then
35+
prev_title=
36+
prev_filename=
37+
else
38+
prev=$(($i - 1))
39+
prev_title="${title[$prev]}"
40+
prev_filename=${filename[$prev]}
41+
fi
42+
if (($i >= ${#filename[@]} - 1))
43+
then
44+
next_title=
45+
next_filename=
46+
else
47+
next=$(($i + 1))
48+
next_title="${title[$next]}"
49+
next_filename=${filename[$next]}
50+
fi
51+
52+
pandoc -d config/pandoc-defaults.yml --template=config/template.html \
53+
-V footdiv=true -V title="${title[$i]}" \
54+
--metadata title="${title[$i]}$titlesuffix" \
55+
-V prev_title="$prev_title" -V prev_filename=$prev_filename \
56+
-V next_title="$next_title" -V next_filename=$next_filename \
57+
-o generated_html/${filename[$i]}.html source_md/${filename[$i]}.md
58+
done
59+
60+
cat source_md/chapters_foot.md >>$chapterfile
61+
62+
pandoc -d config/pandoc-defaults.yml --template=config/template.html \
63+
-V title="Chapters" --metadata title="${title[$i]}$titlesuffix" \
64+
-o generated_html/chapters.html $chapterfile
65+
66+
pandoc -d config/pandoc-defaults.yml --template=config/template.html \
67+
-V faq=true -V title="FAQ" --metadata title="${title[$i]}$titlesuffix" \
68+
-o generated_html/faq.html source_md/faq.md

0 commit comments

Comments
 (0)