diff --git a/awk/markdown_embed.awk b/awk/markdown_embed.awk
index 6d73937..6837121 100644
--- a/awk/markdown_embed.awk
+++ b/awk/markdown_embed.awk
@@ -375,6 +375,13 @@ function rewrite_img_tags(line, out, rest, tag, src, alt, force_inline_tag, e
} else if (is_image_ext(ext_of(src)) && force_inline_tag == "") {
# Preserve hand-written attributes (style/class/etc) for normal images.
repl = tag
+ } else if (force_inline_tag != "" && !is_global_url(src) && is_inline_text_ext(ext_of(src))) {
+ repl = render_code_include(src, 1)
+ if (repl != "") {
+ repl = "
" repl ""
+ } else {
+ repl = render_embed(src, alt, (alt != ""), 1)
+ }
} else {
repl = render_embed(src, alt, (alt != ""), (force_inline_tag != ""))
}
@@ -399,7 +406,12 @@ function rewrite_double_bang_with_parens(line, out, rest, token, inside, src,
src = substr(inside, sep + 2)
sub(/\)$/, "", src)
- repl = render_embed(src, alt, (alt != ""), 1)
+ repl = render_code_include(src, 1)
+ if (repl != "") {
+ repl = "" repl ""
+ } else {
+ repl = render_embed(src, alt, (alt != ""), 1)
+ }
out = out pre repl
rest = post
}
@@ -416,7 +428,12 @@ function rewrite_double_bang_bare(line, out, rest, token, src, pre, post, rep
src = token
sub(/^!!\[/, "", src)
sub(/\]$/, "", src)
- repl = render_embed(src, "", 0, 1)
+ repl = render_code_include(src, 1)
+ if (repl != "") {
+ repl = "" repl ""
+ } else {
+ repl = render_embed(src, "", 0, 1)
+ }
out = out pre repl
rest = post
}
@@ -576,6 +593,75 @@ function restore_plain_markers(line) {
return line
}
+function break_code_double_bang(line, out, rest, pstart, pend, code_content, token, pre, post, inside, sep, src, alt, repl) {
+ out = ""
+ rest = line
+ while (1) {
+ pstart = index(rest, "")
+ if (pstart == 0) {
+ out = out rest
+ break
+ }
+ out = out substr(rest, 1, pstart - 1)
+ rest = substr(rest, pstart)
+ pend = index(substr(rest, 7), "")
+ if (pend == 0) {
+ out = out rest
+ break
+ }
+ pend = pend + 6
+ code_content = substr(rest, 7, pend - 7)
+ rest = substr(rest, pend + 7)
+ if (match(code_content, /!!\[[^\]]*\]\([^)]*\)/)) {
+ token = substr(code_content, RSTART, RLENGTH)
+ pre = substr(code_content, 1, RSTART - 1)
+ post = substr(code_content, RSTART + RLENGTH)
+ inside = token
+ sub(/^!!\[/, "", inside)
+ sep = index(inside, "](")
+ alt = substr(inside, 1, sep - 1)
+ src = substr(inside, sep + 2)
+ sub(/\)$/, "", src)
+ repl = render_code_include(src, 1)
+ if (repl != "") {
+ repl = "" repl ""
+ } else {
+ repl = render_embed(src, alt, (alt != ""), 1)
+ }
+ if (repl == "") {
+ out = out "" code_content ""
+ } else {
+ if (pre != "") out = out "" pre ""
+ out = out repl
+ if (post != "") out = out "" post ""
+ }
+ } else if (match(code_content, /!!\[[^\]]+\]/)) {
+ token = substr(code_content, RSTART, RLENGTH)
+ pre = substr(code_content, 1, RSTART - 1)
+ post = substr(code_content, RSTART + RLENGTH)
+ src = token
+ sub(/^!!\[/, "", src)
+ sub(/\]$/, "", src)
+ repl = render_code_include(src, 1)
+ if (repl != "") {
+ repl = "" repl ""
+ } else {
+ repl = render_embed(src, "", 0, 1)
+ }
+ if (repl == "") {
+ out = out "" code_content ""
+ } else {
+ if (pre != "") out = out "" pre ""
+ out = out repl
+ if (post != "") out = out "" post ""
+ }
+ } else {
+ out = out "" code_content ""
+ }
+ }
+ return out
+}
+
BEGIN {
input_dir = dirname_of(input_file)
in_pre_code = 0
@@ -601,6 +687,9 @@ BEGIN {
line = apply_td_vertical_align(line)
line = restore_plain_markers(line)
+ if (!(in_pre_code || start_pre)) {
+ line = break_code_double_bang(line)
+ }
print line
if (start_pre && !end_pre) {
diff --git a/awk/mask_inline_code.awk b/awk/mask_inline_code.awk
index eb47e3a..56e7e6c 100644
--- a/awk/mask_inline_code.awk
+++ b/awk/mask_inline_code.awk
@@ -67,6 +67,17 @@ function mask(s, t) {
if (plen >= 2 && substr(content, 1, 1) == " " && substr(content, length(content), 1) == " ") {
content = substr(content, 2, length(content) - 2)
}
+ if (content ~ /!!\[/) {
+ _rb_test = content
+ gsub(/!!\[[^\]]*\]\([^)]*\)/, "", _rb_test)
+ gsub(/!!\[[^\]]+\]/, "", _rb_test)
+ gsub(/[[:space:]]+/, "", _rb_test)
+ if (_rb_test == "") {
+ out = out content
+ p = pstart + plen + mpos + plen - 1
+ continue
+ }
+ }
out = out "" mask(content) ""
p = pstart + plen + mpos + plen - 1
} else {