summaryrefslogtreecommitdiff
path: root/doc/scd2gfm.sh
diff options
context:
space:
mode:
authorPhil Jones <philj56@gmail.com>2023-05-11 22:22:44 +0100
committerPhil Jones <philj56@gmail.com>2023-05-12 00:11:35 +0100
commit542c51d25c05541d6ee35c862ec8f60ad01793cd (patch)
treecdc613e1f3b116f4ccb978ec28b14677f0a98355 /doc/scd2gfm.sh
parentcda2fc734378c733f93249958975df55366e8543 (diff)
Improve formatting of markdown manpage previews.
Diffstat (limited to 'doc/scd2gfm.sh')
-rwxr-xr-xdoc/scd2gfm.sh60
1 files changed, 60 insertions, 0 deletions
diff --git a/doc/scd2gfm.sh b/doc/scd2gfm.sh
new file mode 100755
index 0000000..c966832
--- /dev/null
+++ b/doc/scd2gfm.sh
@@ -0,0 +1,60 @@
+#!/bin/sh
+#
+# Convert an scdoc file to GitHub markdown, with some custom tweaks to work
+# around pandoc's poor formatting.
+#
+# Usage:
+# ./scd2gfm < file.scd > file.md
+
+set -eu
+
+html=$(scd2html -f)
+no_sections=$(echo "$html" | sed -e "s|</\?section.*||" -e "s/[^;]<a.*//")
+italics=$(echo "$no_sections" | sed "s|<u>\([^<]*\)</u>|<i>\1</i>|g")
+no_header=$(echo "$italics" | awk '
+/<header>/ {
+ header = 1
+}
+
+/<\/header>/ {
+ header = 0
+}
+
+!/header/ {
+ if (header == 0) {
+ print
+ }
+}
+')
+
+combine_blockquotes=$(echo "$no_header" | awk '
+/\/blockquote/ {
+ if (endblock > 0) {
+ print buffer
+ }
+ endblock = NR
+ buffer = $0
+}
+
+/<blockquote/ {
+ if (endblock == NR - 2) {
+ print "<br/> <br/>"
+ gsub("<blockquote>", "")
+ buffer = ""
+ } else {
+ print buffer
+ print
+ buffer = ""
+ }
+}
+
+!/blockquote/ {
+ if (endblock == NR - 2) {
+ print buffer
+ buffer = ""
+ }
+ print
+}
+')
+
+echo "$combine_blockquotes" | pandoc --from html --to gfm | sed "s/\s\+$//"