diff --git a/lib/markdown.awk b/lib/markdown.awk index 2a67787..cc70728 100755 --- a/lib/markdown.awk +++ b/lib/markdown.awk @@ -29,7 +29,7 @@ function last() { return stack[stack_pointer] } -function replaceEmAndStrong(line, result, start, end) { +function replaceInline(line, result, start, end) { # Replace occurrences of **...** with ... while (match(line, /\*\*([^*]+)\*\*/)) { start = RSTART @@ -45,6 +45,20 @@ function replaceEmAndStrong(line, result, start, end) { # Build the result: before match, , content, , after match line = substr(line, 1, start-1) "" substr(line, start+1, RLENGTH-2) "" substr(line, end+1) } + + while (match(line, /\[([^\]]+)\]\([^\)]+\)/)) { + start = RSTART + end = RSTART + RLENGTH - 1 + matched = substr($0, RSTART, RLENGTH) + if (match(matched, /\[([^\]]+)\]/)) { + matched_link = substr(matched, RSTART+1, RLENGTH-2) + } + if (match(matched, /\([^\)]+\)/)) { + matched_url = substr(matched, RSTART+1, RLENGTH-2) + } + # Build the result: before match, , content, , after match + line = substr(line, 1, start-1) "" matched_link "" substr(line, end+1) + } return line } @@ -124,7 +138,7 @@ function closeOne() { env = last() if (env == "none") { # If no block, print a paragraph - print "
" replaceEmAndStrong($0) "
" + print "" replaceInline($0) "
" } else if (env == "blockquote") { print $0 } @@ -147,4 +161,4 @@ END { print "" env ">" env = last() } -} \ No newline at end of file +}