# - [x] Blockquotes
# - [x] Lists (ordered, unordered)
# - [x] Code blocks (using indention)
-# - [ ] Horizontal rules
+# - [x] Horizontal rules
#
# Basic Markdown - Inline elements:
# ---------------------------------
# - [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] <automatic links>
# - [x] backslash escapes
#
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 "<img src=\"" HTML(href) "\" alt=\"" HTML(text) "\" title=\"" HTML(title) "\" />" inline( substr( line, len + 1) );
+ } else {
+ return "<img src=\"" HTML(href) "\" alt=\"" HTML(text) "\" />" 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 "<img src=\"" rl_href[id] "\" alt=\"" HTML(text) "\" title=\"" rl_title[id] "\" />" inline( substr( line, len + 1) );
+ } else if ( rl_href[id] ) {
+ return "<img src=\"" rl_href[id] "\" alt=\"" HTML(text) "\" />" 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;
if ( block == "" ) {
return "";
+
+ # Horizontal rule
+ } else if ( match( block, /(^|\n) ? ? ?((\* *){3,}|(- *){3,}|(_ *){3,})($|\n)/) ) {
+ len = RLENGTH; st = RSTART;
+ return _block(substr(block, 1, st - 1)) "<hr />\n" _block(substr(block, st + len));
# Blockquote (leading >)
} else if ( match( block, /^> /) ) {