From 1218334a3c55dd1960b1cc74e55b6ea72ac25bf0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Paul=20H=C3=A4nsch?= Date: Fri, 2 Jul 2021 13:15:30 +0200 Subject: [PATCH] md: image embedding, completing support for basic markdown --- markdown.awk | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/markdown.awk b/markdown.awk index eb35258..98a3e8b 100755 --- a/markdown.awk +++ b/markdown.awk @@ -31,7 +31,7 @@ # - [x] Reference style links # - [x] Emphasis *em*/**strong** (*Asterisk*, _Underscore_) # - [x] `code`, also ``code containing `backticks` `` -# - [ ] Images / reference style images +# - [x] Images / reference style images # - [x] # - [x] backslash escapes # @@ -146,6 +146,32 @@ function inline( line, LOCAL, len, code, href, guard ) { return "" substr(line, 1, len) inline( substr(line, len + 1) ); } + # inline images + } else if ( match(line, /^!\[([^]]+)\]\(([^"\)]+)([ \t]+"([^"]+)")?\)/) ) { + len = RLENGTH; + text = gensub(/^!\[([^]]+)\]\(([^"\)]+)([ \t]+"([^"]+)")?\)/, "\\1", "g", line); + href = gensub(/^!\[([^]]+)\]\(([^"\)]+)([ \t]+"([^"]+)")?\)/, "\\2", "g", line); + title = gensub(/^!\[([^]]+)\]\(([^"\)]+)([ \t]+"([^"]+)")?\)/, "\\4", "g", line); + if ( title ) { + return "\""" inline( substr( line, len + 1) ); + } else { + return "\""" inline( substr( line, len + 1) ); + } + + # reference style images + } else if ( match(line, /^!\[([^]]+)\] ?\[([^]]*)\]/ ) ) { + len = RLENGTH; + text = gensub(/^!\[([^\n]+)\] ?\[([^\n]*)\].*/, "\\1", 1, line); + id = gensub(/^!\[([^\n]+)\] ?\[([^\n]*)\].*/, "\\2", 1, line); + if ( ! id ) id = text; + if ( rl_href[id] && rl_title[id] ) { + return "\""" inline( substr( line, len + 1) ); + } else if ( rl_href[id] ) { + return "\""" inline( substr( line, len + 1) ); + } else { + return "" substr(line, 1, len) inline( substr(line, len + 1) ); + } + # ~~strikeout~~ (pandoc) } else if ( match(line, /^~~([[:graph:]]|[[:graph:]]([^~]|~[^~])*[[:graph:]])~~/) ) { len = RLENGTH; -- 2.39.2