cmark
My personal build of CMark ✏️
- Commit
- 52c591d75433b16cf32f4fae319ccb60b20f6ae7
- Parent
- a29c16c5e283fb50ecd318477072687caf987d4a
- Author
- John MacFarlane <jgm@berkeley.edu>
- Date
cmark: Add function & option to normalize text nodes.
So, instead of
<text>Hi</text>
<text>&</text>
<text>lo</text>
we get
<text>Hi&lo</text>
* Added exported `cmark_consolidate_text_nodes` function.
* Added `CMARK_OPT_NORMALIZE` to options.
* Added optional normalization in XML writer.
* Added `--normalize` option to command-line program.
* Updated man page.
Diffstat
5 files changed, 57 insertions, 0 deletions
diff --git a/src/cmark.h b/src/cmark.h
@@ -356,6 +356,11 @@ cmark_node_prepend_child(cmark_node *node, cmark_node *child);
CMARK_EXPORT int
cmark_node_append_child(cmark_node *node, cmark_node *child);
+/** Consolidates adjacent text nodes.
+ */
+CMARK_EXPORT void
+cmark_consolidate_text_nodes(cmark_node *root);
+
/**
* ## Parsing
*
@@ -441,6 +446,10 @@ char *cmark_render_man(cmark_node *root, long options);
*/
#define CMARK_OPT_HARDBREAKS 2
+/** Normalize tree by consolidating adjacent text nodes.
+ */
+#define CMARK_OPT_NORMALIZE 4
+
/** # AUTHORS
*
* John MacFarlane, Vicent Marti, Kārlis Gaņģis, Nick Wellnhofer.
diff --git a/src/main.c b/src/main.c
@@ -26,6 +26,7 @@ void print_usage()
printf(" --to, -t FORMAT Specify output format (html, xml, man)\n");
printf(" --sourcepos Include source position attribute\n");
printf(" --hardbreaks Treat newlines as hard line breaks\n");
+ printf(" --normalize Consolidate adjacent text nodes\n");
printf(" --help, -h Print usage information\n");
printf(" --version Print version\n");
}
@@ -79,6 +80,8 @@ int main(int argc, char *argv[])
options |= CMARK_OPT_SOURCEPOS;
} else if (strcmp(argv[i], "--hardbreaks") == 0) {
options |= CMARK_OPT_HARDBREAKS;
+ } else if (strcmp(argv[i], "--normalize") == 0) {
+ options |= CMARK_OPT_NORMALIZE;
} else if ((strcmp(argv[i], "--help") == 0) ||
(strcmp(argv[i], "-h") == 0)) {
print_usage();