parsec-presentation/parsec/gen

57 lines
1.3 KiB
Text
Raw Normal View History

2013-10-03 14:45:30 +00:00
#!/usr/bin/env zsh
# get script directory
if [[ ${0[0]} = '/' ]]; then
scriptdir="${0:h}"
else
scriptdir="$PWD/${0:h}"
fi
cd $scriptdir
htmldir="_html"
2013-10-07 13:56:31 +00:00
tmpdir="_tmp"
2013-10-03 14:52:02 +00:00
[[ -e $htmldir ]] && \rm -rf $htmldir
2013-10-07 13:56:31 +00:00
[[ -e $tmpdir ]] && \rm -rf $tmpdir
2013-10-03 14:52:02 +00:00
mkdir -p $htmldir
2013-10-07 13:56:31 +00:00
# split a markdown file on ##
splitMarkdown() {
dstdir=$tmpdir/${1:h}
mdfic=$tmpdir/${1:r}
[[ ! -d $dstdir ]] && mkdir -p $dstdir
awk '/^## /{ dest=sprintf("'$mdfic'-%03d.md",n); print dest; n++ } { print $0 > dest}' $1
}
2013-10-03 14:45:30 +00:00
# Convert all slides from markdown
2013-10-03 14:52:02 +00:00
for slide in **/*.{md,html}(.N); do
2013-10-03 14:45:30 +00:00
dst="$htmldir/${slide:r}.html"
[[ ! -e ${dst:h} ]] && mkdir -p ${dst:h}
case ${slide:e} in
2013-10-07 13:56:31 +00:00
md) i=0
for tmpfic in $(splitMarkdown $slide); do
((i++))
print "Split $tmpfic"
dst="$( print -- ${tmpfic:r}.html | sed 's#'$tmpdir'#'$htmldir'#' )"
pandoc -f markdown -t html $tmpfic > $dst
done ;;
2013-10-03 14:45:30 +00:00
html) cp $slide $dst;;
esac
done
name=${PWD:t}
{
cat head.html
for slide in $htmldir/**/*.html(.N); do
case $slide in
2013-10-03 14:52:02 +00:00
$htmldir/head.html|$htmldir/tail.html) continue ;;
2013-10-03 14:45:30 +00:00
esac
2013-10-03 14:52:02 +00:00
print -- "$slide" >&2
2013-10-03 14:45:30 +00:00
print -- '<section class="slide">'
cat $slide | sed 's#&amp;#<span class="and">&</span>#g'
print -- '</section>'
done
cat tail.html
} > ../$name.html