]> git.plutz.net Git - shellwiki/commitdiff
Merge commit '85299c7a3814fe8206c5db335cc51aaf1a245b23'
authorPaul Hänsch <paul@plutz.net>
Wed, 18 May 2022 11:26:46 +0000 (13:26 +0200)
committerPaul Hänsch <paul@plutz.net>
Wed, 18 May 2022 11:26:46 +0000 (13:26 +0200)
1  2 
cgilite/markdown.awk

diff --combined cgilite/markdown.awk
index b0647922efdcbf5859dac4d3cda72145035403ed,e63541bebfa78ffc70053ca23a1d94ff6b586c66..e63541bebfa78ffc70053ca23a1d94ff6b586c66
@@@ -4,10 -4,6 +4,6 @@@
  # EXPERIMENTAL Markdown processor with minimal dependencies.
  # Meant to support all features of John Grubers basic Markdown
  # + a number of common extensions, mostly inspired by Pandoc Markdown
- #
- # ToDo:
- # - HTML processing / escaping (according to environment flag)
- # - em-dashes and arrows
  
  # Supported Features / TODO:
  # ==========================
@@@ -127,12 -123,18 +123,18 @@@ function inline( line, LOCAL, len, code
      href = HTML( substr( line, 2, len - 2) );
      return "<a href=\"" href "\">" href "</a>" inline( substr( line, len + 1) );
  
+   # quick link email
+   } else if ( match( line, /^<[a-zA-Z0-9.!#$%&'\''*+\/=?^_`{|}~-]+@[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*>/ ) ) {
+     len = RLENGTH;
+     href = HTML( substr( line, 2, len - 2) );
+     return "<a href=\"mailto:" href "\">" href "</a>" inline( substr( line, len + 1) );
    # inline links
-   } else if ( match(line, /^\[([^]]+)\]\(([^"\)]+)([ \t]+"([^"]+)")?\)/) ) {
+   } else if ( match(line, /^\[([^]]+)\]\(([^"\)]+)([[:space:]]+"([^"]+)")?\)/) ) {
      len = RLENGTH;
-     text  = gensub(/^\[([^]]+)\]\(([^"\)]+)([ \t]+"([^"]+)")?\)/, "\\1", "g", line);
-     href  = gensub(/^\[([^]]+)\]\(([^"\)]+)([ \t]+"([^"]+)")?\)/, "\\2", "g", line);
-     title = gensub(/^\[([^]]+)\]\(([^"\)]+)([ \t]+"([^"]+)")?\)/, "\\4", "g", line);
+     text  = gensub(/^\[([^]]+)\]\(([^"\)]+)([[:space:]]+"([^"]+)")?\)/, "\\1", 1, substr(line, 1, len) );
+     href  = gensub(/^\[([^]]+)\]\(([^"\)]+)([[:space:]]+"([^"]+)")?\)/, "\\2", 1, substr(line, 1, len) );
+     title = gensub(/^\[([^]]+)\]\(([^"\)]+)([[:space:]]+"([^"]+)")?\)/, "\\4", 1, substr(line, 1, len) );
      if ( title ) {
        return "<a href=\"" HTML(href) "\" title=\"" HTML(title) "\">" inline( text ) "</a>" inline( substr( line, len + 1) );
      } else {
    # reference style links
    } else if ( match(line, /^\[([^]]+)\] ?\[([^]]*)\]/ ) ) {
      len = RLENGTH;
-     text = gensub(/^\[([^\n]+)\] ?\[([^\n]*)\].*/, "\\1", 1, line);
-       id = gensub(/^\[([^\n]+)\] ?\[([^\n]*)\].*/, "\\2", 1, line);
+     text = gensub(/^\[([^\n]+)\] ?\[([^\n]*)\].*/, "\\1", 1, substr(line, 1, len) );
+       id = gensub(/^\[([^\n]+)\] ?\[([^\n]*)\].*/, "\\2", 1, substr(line, 1, len) );
      if ( ! id ) id = text;
      if ( rl_href[id] && rl_title[id] ) {
        return "<a href=\"" HTML(rl_href[id]) "\" title=\"" HTML(rl_title[id]) "\">" inline(text) "</a>" 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);
+     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 ) {
        return "<img src=\"" HTML(href) "\" alt=\"" HTML(text) "\" title=\"" HTML(title) "\" />" inline( substr( line, len + 1) );
      } else {
    # reference style images
    } else if ( match(line, /^!\[([^]]+)\] ?\[([^]]*)\]/ ) ) {
      len = RLENGTH;
-     text = gensub(/^!\[([^\n]+)\] ?\[([^\n]*)\].*/, "\\1", 1, line);
-       id = gensub(/^!\[([^\n]+)\] ?\[([^\n]*)\].*/, "\\2", 1, line);
+     text = gensub(/^!\[([^\n]+)\] ?\[([^\n]*)\].*/, "\\1", 1, substr(line, 1, len) );
+       id = gensub(/^!\[([^\n]+)\] ?\[([^\n]*)\].*/, "\\2", 1, substr(line, 1, len) );
      if ( ! id ) id = text;
      if ( rl_href[id] && rl_title[id] ) {
        return "<img src=\"" HTML(rl_href[id]) "\" alt=\"" HTML(text) "\" title=\"" HTML(rl_title[id]) "\" />" inline( substr( line, len + 1) );