56 lines
1.3 KiB
Bash
Executable file
56 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++))
|
|
print "Split $tmpfic"
|
|
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#&#<span class="and">&</span>#g'
|
|
print -- '</section>'
|
|
done
|
|
cat tail.html
|
|
} > ../$name.html
|