if (t == NULL)
return;
- short temp_short;
- link * temp_link = NULL;
- char * temp_char = NULL;
- bool temp_bool = 0;
- token * temp_token = NULL;
+ short temp_short;
+ link * temp_link = NULL;
+ char * temp_char = NULL;
+ char * temp_char2 = NULL;
+ bool temp_bool = 0;
+ token * temp_token = NULL;
switch (t->type) {
case AMPERSAND:
}
break;
case PAIR_BRACKET_VARIABLE:
- print_token(t);
+ temp_char = text_inside_pair(source, t);
+ temp_char2 = extract_metadata(scratch, temp_char);
+
+ if (temp_char2)
+ mmd_print_string_html(out, temp_char2, false);
+ else
+ mmd_export_token_tree_html(out, source, t->child, offset, scratch);
+
+ // Don't free temp_char2 (it belongs to meta *)
+ free(temp_char);
break;
case PAIR_CRITIC_ADD:
// Ignore if we're rejecting
}
+char * extract_metadata(scratch_pad * scratch, const char * target) {
+ char * clean = label_from_string(target);
+
+ meta * m = extract_meta_from_stack(scratch, clean);
+ free(clean);
+ if (m)
+ return m->value;
+
+ return NULL;
+}
+
+
bool definition_extract(mmd_engine * e, token ** remainder) {
char * source = e->dstr->str;
token * label = NULL;
meta * meta_new(const char * source, size_t start, size_t len);
void meta_set_value(meta * m, const char * value);
void meta_free(meta * m);
+char * extract_metadata(scratch_pad * scratch, const char * target);
#endif
--- /dev/null
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8"/>
+ <title>*foo* "bar"</title>
+ <meta name="foo" content="bar foo bar foo bar"/>
+ <meta name="bat" content="**foo**"/>
+</head>
+<body>
+
+<p>foo: bar</p>
+
+<p>bar foo bar foo bar</p>
+
+<p>[%bar]</p>
+
+<p>**foo**</p>
+
+</body>
+</html>
--- /dev/null
+<p>title: <em>foo</em> "bar"
+foo: bar
+foo bar
+foo bar
+foo: <em>bar</em>
+bat: <strong>foo</strong></p>
+
+<p>foo: bar</p>
+
+<p>[%foo]</p>
+
+<p>[%bar]</p>
+
+<p>[%bat]</p>
--- /dev/null
+title: *foo* "bar"
+foo: bar
+foo bar
+ foo bar
+foo: *bar*
+bat: **foo**
+
+foo: bar
+
+[%foo]
+
+[%bar]
+
+[%bat]