function strip_markdown(s) { gsub(/<[^>]+>/, "", s) gsub(/[*_`~]/, "", s) gsub(/[\[\]]/, "", s) gsub(/\([^\)]*\)/, "", s) sub(/^[[:space:]]*/, "", s) sub(/[[:space:]]*$/, "", s) return s } BEGIN { has_prev = 0 in_pre = 0 } { if ($0 ~ /^
/) {
        in_pre = 1
        if (has_prev && prev != "") { print prev; has_prev = 0 }
        print
        next
    }
    if (in_pre) {
        if ($0 ~ /<\/code><\/pre>/) in_pre = 0
        print
        next
    }

    if ($0 ~ /^=+$/ && has_prev && prev != "" && prev !~ /^<[a-z]/) {
        print "

" prev "

" has_prev = 0 } else if ($0 ~ /^-+$/ && has_prev && prev != "" && prev !~ /^<[a-z]/) { print "

" prev "

" has_prev = 0 } else { if (has_prev) { line = prev if (line ~ /^# /) { sub(/^# /, "", line); print "

" line "

" } else if (line ~ /^## /) { sub(/^## /, "", line); print "

" line "

" } else if (line ~ /^### /) { sub(/^### /, "", line); print "

" line "

" } else if (line ~ /^#### /) { sub(/^#### /, "", line); print "

" line "

" } else if (line ~ /^##### /) { sub(/^##### /, "", line); print "
" line "
" } else if (line ~ /^###### /) { sub(/^###### /, "", line); print "
" line "
" } else { print prev } } prev = $0 has_prev = 1 } } END { if (has_prev) { line = prev if (line ~ /^# /) { sub(/^# /, "", line); print "

" line "

" } else { print prev } } }