}
# inline images
- } else if ( match(line, "^!" lix "\\([\n\t ]*" lid "([\n\t ]+" lit ")?[\n\t ]*\\)(\\{[a-zA-Z \t-]*\\})?") ) {
+ } else if ( match(line, "^!" lix "\\([\n\t ]*" lid "([\n\t ]+" lit ")?[\n\t ]*\\)("rattr")?") ) {
len = RLENGTH; text = href = title = attrib = substr( line, 1, len);
sub("^!\\[", "", text);
- sub("\\]\\([\n\t ]*" lid "([\n\t ]+" lit ")?[\n\t ]*\\)(\\{[a-zA-Z \t-]*\\})?$", "", text);
+ sub("\\]\\([\n\t ]*" lid "([\n\t ]+" lit ")?[\n\t ]*\\)("rattr")?$", "", text);
sub("^!" lix "\\([\n\t ]*", "", href);
- sub("([\n\t ]+" lit ")?[\n\t ]*\\)(\\{[a-zA-Z \t-]*\\})?$", "", href);
+ sub("([\n\t ]+" lit ")?[\n\t ]*\\)("rattr")?$", "", href);
sub("^!" lix "\\([\n\t ]*" lid, "", title);
- sub("[\n\t ]*\\)(\\{[a-zA-Z \t-]*\\})?$", "", title);
+ sub("[\n\t ]*\\)("rattr")?$", "", title);
sub("^[\n\t ]+", "", title);
- sub("^!" lix "\\([\n\t ]*" lid "([\n\t ]+" lit ")?[\n\t ]*\\)", "", attrib);
- sub(/^\{[ \t]*/, "", attrib); sub(/[ \t]*\}$/, "", attrib); gsub(/[ \t]+/, " ", attrib);
+ attrib = _attr(attrib);
if ( match(href, /^<.*>$/) ) { sub(/^</, "", href); sub(/>$/, "", href); }
if ( match(title, /^".*"$/) ) { sub(/^"/, "", title); sub(/"$/, "", title); }
}
# First Order Heading H1 + Attrib
- } else if ( match( block, /^([^\n]+)([ \t]*\{([^\}\n]+)\})\n===+(\n|$)/ ) ) {
+ } else if ( match( block, "^([^\n]+)([ \t]*"rattr")\n===+(\n|$)" ) ) {
len = RLENGTH; text = attrib = block;
sub(/([ \t]*\{([^\}\n]+)\})\n===+(\n.*)?$/, "", text);
- sub(/\}\n===+(\n.*)?$/, "", attrib); sub(/^([^\n]+)[ \t]*\{/, "", attrib);
- gsub(/[^a-zA-Z0-9_-]+/, " ", attrib); gsub(/(^ | $)/, "", attrib);
+ attrib = _attr(attrib);
ret = ret headline(1, text, attrib) ; block = substr( block, len + 1 );
continue;
continue;
# Second Order Heading H2 + Attrib
- } else if ( match( block, /^([^\n]+)([ \t]*\{([^\}\n]+)\})\n---+(\n|$)/ ) ) {
+ } else if ( match( block, "^([^\n]+)([ \t]*"rattr")\n---+(\n|$)" ) ) {
len = RLENGTH; text = attrib = block;
sub(/([ \t]*\{([^\}\n]+)\})\n---+(\n.*)?$/, "", text);
- sub(/\}\n---+(\n.*)?$/, "", attrib); sub(/^([^\n]+)[ \t]*\{/, "", attrib);
- gsub(/[^a-zA-Z0-9_-]+/, " ", attrib); gsub(/(^ | $)/, "", attrib);
+ attrib = _attr(attrib);
ret = ret headline(2, text, attrib) ; block = substr( block, len + 1);
continue;
continue;
# # Nth Order Heading H1 H2 H3 H4 H5 H6 + Attrib
- } else if ( match( block, /^##?#?#?#?#?[^#\n]([^\n#]|#[^\t\n# ]|#[\t ]+[^\t\n ])+#*[\t ]*\{[\ta-zA-Z -]*\}(\n|$)/ ) ) {
+ } else if ( match( block, "^##?#?#?#?#?[^#\n]([^\n#]|#[^\t\n# ]|#[\t ]+[^\t\n ])+#*[\t ]*"rattr"(\n|$)" ) ) {
len = RLENGTH; text = attrib = substr(block, 1, len);
match(block, /^##?#?#?#?#?[^#]/); n = RLENGTH - 1;
text = substr(text, n + 1); sub(/^[ \t]*/, "", text);
sub(/[ \t]*#*([ \t]*\{([a-zA-Z \t-]*)\})(\n.*)?$/, "", text);
- sub(/^##?#?#?#?#?[^#\n]([^\n#]|#[^\t\n# ]|#[\t ]+[^\t\n ])+#*[\t ]*\{/, "", attrib);
- sub(/\}(\n.*)?$/, "", attrib);
- gsub(/[^a-zA-Z0-9_-]+/, " ", attrib); gsub(/(^ | $)/, "", attrib);
+ attrib = _attr(attrib);
ret = ret headline( n, text, attrib ); block = substr( block, len + 1);
continue;
continue;
# block images (wrapped in <figure>)
- } else if ( match(block, "^!" lix "\\([\n\t ]*" lid "([\n\t ]+" lit ")?[\n\t ]*\\)(\\{[a-zA-Z \t-]*\\})?(\n|$)") ) {
+ } else if ( match(block, "^!" lix "\\([\n\t ]*" lid "([\n\t ]+" lit ")?[\n\t ]*\\)("rattr")?(\n|$)") ) {
len = RLENGTH; text = href = title = attrib = substr( block, 1, len);
sub("^!\\[", "", text);
sub("[\n\t ]*\\)(\\{[a-zA-Z \t-]*\\})?(\n.*)?$", "", title);
sub("^[\n\t ]+", "", title);
- sub("^!" lix "\\([\n\t ]*" lid "([\n\t ]+" lit ")?[\n\t ]*\\)", "", attrib);
- sub("(\n.*)?$", "", attrib);
- sub(/^\{[ \t]*/, "", attrib); sub(/[ \t]*\}$/, "", attrib); gsub(/[ \t]+/, " ", attrib);
+ attrib = _attr(attrib);
if ( match(href, /^<.*>$/) ) { sub(/^</, "", href); sub(/>$/, "", href); }
if ( match(title, /^".*"$/) ) { sub(/^"/, "", title); sub(/"$/, "", title); }
}
}
+function _attr (attrib) {
+ if ( sub(/.*\{[ \t.#]*/, "", attrib) ) if ( sub(/[ \t]*\}(\n.*)?$/, "", attrib) ) {
+ gsub(/[ \t.#]+/, " ", attrib);
+ return attrib;
+ } else return "";
+}
+
BEGIN {
# Global Vars
file = ""; rl_href[""] = ""; rl_title[""] = "";
iea = "\\*([^*[:space:]]|[^*[:space:]]" na "*[^*[:space:]])\\*" # inner <em> (asterisk)
isa = "\\*\\*([^*[:space:]]|[^*[:space:]]" na "*[^*[:space:]])\\*\\*" # inner <strong> (asterisk)
+ rattr = "\\{[ \t]*([.#]?([a-zA-Z0-9]+-)*[a-zA-Z0-9]+[ \t]+)*([.#]?([a-zA-Z0-9]+-)*[a-zA-Z0-9]+)[ \t]*\\}"
+
lix="\\[(\\\\[^\n]|[^]\n\\\\[])*\\]" # link text
lid="(<(\\\\[^\n]|[^\n<>\\\\])*>|(\\\\.|[^()\"'\\\\])+|([^<\n\t ()\\\\]|\\\\[^\n])(\\\\[\n]|[^\n\t \\(\\)\\\\])*)" # link dest
lit="(\"(\\\\.|[^\"\\\\])*\"|'(\\\\.|[^'\\\\])*'|\\((\\\\.|[^\\(\\)\\\\])*\\))" # link text