parsec-presentation/parsec/gen
Yann Esposito (Yogsototh) 3387bb886c better git ignore + update
2013-10-07 22:34:27 +02:00

55 lines
1.3 KiB
Bash
Executable file

#!/usr/bin/env zsh
# get script directory
if [[ ${0[0]} = '/' ]]; then
scriptdir="${0:h}"
else
scriptdir="$PWD/${0:h}"
fi
cd $scriptdir
htmldir="_html"
tmpdir="_tmp"
[[ -e $htmldir ]] && \rm -rf $htmldir
[[ -e $tmpdir ]] && \rm -rf $tmpdir
mkdir -p $htmldir
# 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
}
# Convert all slides from markdown
for slide in **/*.{md,html}(.N); do
dst="$htmldir/${slide:r}.html"
[[ ! -e ${dst:h} ]] && mkdir -p ${dst:h}
case ${slide:e} in
md) i=0
for tmpfic in $(splitMarkdown $slide); do
((i++))
dst="$( print -- ${tmpfic:r}.html | sed 's#'$tmpdir'#'$htmldir'#' )"
pandoc -f markdown -t html $tmpfic > $dst
done ;;
html) cp $slide $dst;;
esac
done
name=${PWD:t}
{
cat head.html
for slide in $htmldir/**/*.html(.N); do
case $slide in
$htmldir/head.html|$htmldir/tail.html) continue ;;
esac
print -- "$slide" >&2
print -- '<section class="slide">'
cat $slide | sed 's#&amp;#<span class="and">&</span>#g'
print -- '</section>'
done
cat tail.html
} > ../$name.html