#!/bin/sh
# replace all * with _ for easier processing
#
_pre_emph () {
while IFS= read -r line; do
while [ "$line" != "${line%%\**}" ]; do
printf "%s_" "${line%%\**}"
line="${line#*\*}"
done
printf "${line}\n"
done
}
# fix any misaligned and closign tags
#
_post_emph () {
while IFS= read -r line; do
# TODO: avoid this problem entirely?
local wrong="" right=""
while [ "$line" != "${line%%${wrong}*}" ]; do
printf "%s${right}" "${line%%${wrong}*}"
line="${line#*${wrong}}"
done
printf "${line}\n"
done
}
# parse emphasis in a line
#
# emph [bound]
%s " "$line" || printf "%s " "$line" empty=false ;; esac done $empty || { printf "
\n" } } # convert the markdown from stdin into html # md2html () { _p \ | _pre_emph \ | _emph '__' "" "" \ | _emph '_' "" "" \ | _post_emph \ | _h 6 \ | _h 5 \ | _h 4 \ | _h 3 \ | _h 2 \ | _h 1 } md2html