BEGIN { in_fence = 0; first_line = 0; code_tag = "" } { if (!in_fence && $0 ~ /^```/) { in_fence = 1 first_line = 1 lang = $0 sub(/^```[[:space:]]*/, "", lang) sub(/[[:space:]]*$/, "", lang) if (lang != "") { code_tag = "" } else { code_tag = "" } next } if (in_fence && $0 ~ /^```[[:space:]]*$/) { if (first_line) printf "%s", "
" code_tag
        print "
" in_fence = 0 next } if (in_fence) { gsub(/&/, "\\&"); gsub(//, "\\>") if (first_line) { first_line = 0 printf "%s", "
" code_tag
            if ($0 == "") {
                print ""
                next
            }
            print $0
        } else {
            print
        }
    } else {
        print
    }
}
END {
    if (in_fence) {
        if (first_line) printf "%s", "
" code_tag
        print "
" } }