X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;ds=inline;f=cgilite%2Fmarkdown.awk;h=44d4e0d7d16aa8aaab7638da20debc775f9770c3;hb=7defc340d721f26e33c0fa1df0e233c69b53c54a;hp=2dec7c8fec3830b4e07d9260436d43caf29ca456;hpb=247e84380220c366ca896d3c93da466f4c68ef4a;p=shellwiki
diff --git a/cgilite/markdown.awk b/cgilite/markdown.awk
index 2dec7c8..44d4e0d 100755
--- a/cgilite/markdown.awk
+++ b/cgilite/markdown.awk
@@ -62,6 +62,8 @@
# - [x] ^Superscript^ ~Subscript~ (pandoc)
# - [-] Bracketed spans (pandoc)
# - [-] Inline attributes (pandoc)
+# - [x] Image attributes (custom, pandoc inspired, inline only)
+# - [x] Wiki style links [[PageName]] / [[PageName|Link Text]]
# - [-] TEX-Math (pandoc)
# - ? Footnotes (php md)
# - ? Abbreviations (php md)
@@ -117,6 +119,14 @@ function inline( line, LOCAL, len, code, href, guard ) {
return "" code "
" inline( substr( line, len + 1 ) )
}
+ # Wiki style links
+ } else if ( match( line, /^\[\[([^\]\|]+)(\|([^\]]+))?\]\]/) ) {
+ len = RLENGTH;
+ href = gensub(/^\[\[([^\]\|]+)(\|([^\]]+))?\]\]/, "\\1", 1, substr(line, 1, len) );
+ text = gensub(/^\[\[([^\]\|]+)(\|([^\]]+))?\]\]/, "\\3", 1, substr(line, 1, len) );
+ if ( ! text ) text = href;
+ return "" HTML(text) "" inline( substr( line, len + 1) );
+
# quick links ("automatic links" in md doc)
} else if ( match( line, /^<[a-zA-Z]+:\/\/([-\.[:alnum:]]+)(:[0-9]*)?(\/[^>]*)?>/ ) ) {
len = RLENGTH;
@@ -156,13 +166,18 @@ function inline( line, LOCAL, len, code, href, guard ) {
}
# inline images
- } else if ( match(line, /^!\[([^]]+)\]\(([^"\)]+)([ \t]+"([^"]+)")?\)/) ) {
+ } else if ( match(line, /^!\[([^]]+)\]\(([^"\)]+)([ \t]+"([^"]+)")?\)(\{([a-zA-Z \t-]*)\})?/) ) {
len = RLENGTH;
- text = gensub(/^!\[([^]]+)\]\(([^"\)]+)([ \t]+"([^"]+)")?\)/, "\\1", "g", substr(line, 1, len) );
- href = gensub(/^!\[([^]]+)\]\(([^"\)]+)([ \t]+"([^"]+)")?\)/, "\\2", "g", substr(line, 1, len) );
- title = gensub(/^!\[([^]]+)\]\(([^"\)]+)([ \t]+"([^"]+)")?\)/, "\\4", "g", substr(line, 1, len) );
- if ( title ) {
+ text = gensub(/^!\[([^]]+)\]\(([^"\)]+)([ \t]+"([^"]+)")?\)(\{([a-zA-Z \t-]*)\})?/, "\\1", "g", substr(line, 1, len) );
+ href = gensub(/^!\[([^]]+)\]\(([^"\)]+)([ \t]+"([^"]+)")?\)(\{([a-zA-Z \t-]*)\})?/, "\\2", "g", substr(line, 1, len) );
+ title = gensub(/^!\[([^]]+)\]\(([^"\)]+)([ \t]+"([^"]+)")?\)(\{([a-zA-Z \t-]*)\})?/, "\\4", "g", substr(line, 1, len) );
+ attrib = gensub(/^!\[([^]]+)\]\(([^"\)]+)([ \t]+"([^"]+)")?\)(\{([a-zA-Z \t-]*)\})?/, "\\6", "g", substr(line, 1, len) );
+ if ( title && attrib ) {
+ return "" inline( substr( line, len + 1) );
+ } else if ( title ) {
return "" inline( substr( line, len + 1) );
+ } else if ( attrib ) {
+ return "" inline( substr( line, len + 1) );
} else {
return "" inline( substr( line, len + 1) );
}
@@ -416,7 +431,7 @@ function _block( block, LOCAL, st, len, hlvl, htxt, guard, code, indent, attrib
_block( substr( block, len + 1) );
# Indented Code Block
- } else if ( match(block, /^( |\t)( *\t*[^ \t\n])+(\n|$)(( |\t)[^\n]+(\n|$)|[ \t]*(\n|$))*/) ) {
+ } else if ( match(block, /^( |\t)( *\t*[^ \t\n]+ *\t*)+(\n|$)(( |\t)[^\n]+(\n|$)|[ \t]*(\n|$))*/) ) {
len = RLENGTH; st = RSTART;
code = substr(block, 1, len);
gsub(/(^|\n)( |\t)/, "\n", code);
@@ -490,7 +505,7 @@ function _block( block, LOCAL, st, len, hlvl, htxt, guard, code, indent, attrib
HL[1]++; HL[2] = 0; HL[3] = 0; HL[4] = 0; HL[5] = 0; HL[6] = 0;
return "