cmark

My personal build of CMark ✏️

Commit
56cd911ac2339a8ef80543780325a31e783f8c03
Parent
4811dc3ec2330f015444ac6f5ee4f8cbf3563808
Author
John MacFarlane <jgm@berkeley.edu>
Date

Separate parsing and rendering opts in cmark.h.

This change also changes some of these constants' numerical values, but nothing should change in the API if you use the constants themselves. It should now be clear in the man page which options affect parsing and which affect rendering.

Closes #88.

Diffstat

2 files changed, 50 insertions, 29 deletions

Status File Name N° Changes Insertions Deletions
Modified man/man3/cmark.3 39 24 15
Modified src/cmark.h 40 26 14
diff --git a/man/man3/cmark.3 b/man/man3/cmark.3
@@ -528,6 +528,9 @@ Render a \f[I]node\f[] tree as a commonmark document.
 .PP
 Render a \f[I]node\f[] tree as a LaTeX document.
 
+.SS
+Options
+
 .PP
 .nf
 \fC
@@ -538,13 +541,16 @@ Render a \f[I]node\f[] tree as a LaTeX document.
 .fi
 
 .PP
-Default writer options.
+Default options.
+
+.SS
+Options affecting rendering
 
 .PP
 .nf
 \fC
 .RS 0n
-#define CMARK_OPT_SOURCEPOS 1
+#define CMARK_OPT_SOURCEPOS 1 << 1
 .RE
 \f[]
 .fi
@@ -556,7 +562,7 @@ Include a \f[C]data\-sourcepos\f[] attribute on all block elements.
 .nf
 \fC
 .RS 0n
-#define CMARK_OPT_HARDBREAKS 2
+#define CMARK_OPT_HARDBREAKS 1 << 2
 .RE
 \f[]
 .fi
@@ -568,32 +574,38 @@ Render \f[C]softbreak\f[] elements as hard line breaks.
 .nf
 \fC
 .RS 0n
-#define CMARK_OPT_NORMALIZE 4
+#define CMARK_OPT_SAFE 1 << 3
 .RE
 \f[]
 .fi
 
 .PP
-Normalize tree by consolidating adjacent text nodes.
+Suppress raw HTML and unsafe links (\f[C]javascript:\f[],
+\f[C]vbscript:\f[], \f[C]file:\f[], and \f[C]data:\f[], except for
+\f[C]image/png\f[], \f[C]image/gif\f[], \f[C]image/jpeg\f[], or
+\f[C]image/webp\f[] mime types). Raw HTML is replaced by a placeholder
+HTML comment. Unsafe links are replaced by empty strings.
+
+.SS
+Options affecting parsing
 
 .PP
 .nf
 \fC
 .RS 0n
-#define CMARK_OPT_SMART 8
+#define CMARK_OPT_NORMALIZE 1 << 8
 .RE
 \f[]
 .fi
 
 .PP
-Convert straight quotes to curly, \-\-\- to em dashes, \-\- to en
-dashes.
+Normalize tree by consolidating adjacent text nodes.
 
 .PP
 .nf
 \fC
 .RS 0n
-#define CMARK_OPT_VALIDATE_UTF8 16
+#define CMARK_OPT_VALIDATE_UTF8 1 << 9
 .RE
 \f[]
 .fi
@@ -606,17 +618,14 @@ with the replacement character U+FFFD.
 .nf
 \fC
 .RS 0n
-#define CMARK_OPT_SAFE 32
+#define CMARK_OPT_SMART 1 << 10
 .RE
 \f[]
 .fi
 
 .PP
-Suppress raw HTML and unsafe links (\f[C]javascript:\f[],
-\f[C]vbscript:\f[], \f[C]file:\f[], and \f[C]data:\f[], except for
-\f[C]image/png\f[], \f[C]image/gif\f[], \f[C]image/jpeg\f[], or
-\f[C]image/webp\f[] mime types). Raw HTML is replaced by a placeholder
-HTML comment. Unsafe links are replaced by empty strings.
+Convert straight quotes to curly, \-\-\- to em dashes, \-\- to en
+dashes.
 
 .SS
 Version information
diff --git a/src/cmark.h b/src/cmark.h
@@ -483,38 +483,50 @@ char *cmark_render_commonmark(cmark_node *root, int options, int width);
 CMARK_EXPORT
 char *cmark_render_latex(cmark_node *root, int options, int width);
 
-/** Default writer options.
+/**
+ * ## Options
+ */
+
+/** Default options.
  */
 #define CMARK_OPT_DEFAULT 0
 
+/**
+ * ### Options affecting rendering
+ */
+
 /** Include a `data-sourcepos` attribute on all block elements.
  */
-#define CMARK_OPT_SOURCEPOS 1
+#define CMARK_OPT_SOURCEPOS 1 << 1
 
 /** Render `softbreak` elements as hard line breaks.
  */
-#define CMARK_OPT_HARDBREAKS 2
+#define CMARK_OPT_HARDBREAKS 1 << 2
 
-/** Normalize tree by consolidating adjacent text nodes.
+/** Suppress raw HTML and unsafe links (`javascript:`, `vbscript:`,
+ * `file:`, and `data:`, except for `image/png`, `image/gif`,
+ * `image/jpeg`, or `image/webp` mime types).  Raw HTML is replaced
+ * by a placeholder HTML comment. Unsafe links are replaced by
+ * empty strings.
  */
-#define CMARK_OPT_NORMALIZE 4
+#define CMARK_OPT_SAFE 1 << 3
 
-/** Convert straight quotes to curly, --- to em dashes, -- to en dashes.
+/**
+ * ### Options affecting parsing
+ */
+
+/** Normalize tree by consolidating adjacent text nodes.
  */
-#define CMARK_OPT_SMART 8
+#define CMARK_OPT_NORMALIZE 1 << 8
 
 /** Validate UTF-8 in the input before parsing, replacing illegal
  * sequences with the replacement character U+FFFD.
  */
-#define CMARK_OPT_VALIDATE_UTF8 16
+#define CMARK_OPT_VALIDATE_UTF8 1 << 9
 
-/** Suppress raw HTML and unsafe links (`javascript:`, `vbscript:`,
- * `file:`, and `data:`, except for `image/png`, `image/gif`,
- * `image/jpeg`, or `image/webp` mime types).  Raw HTML is replaced
- * by a placeholder HTML comment. Unsafe links are replaced by
- * empty strings.
+/** Convert straight quotes to curly, --- to em dashes, -- to en dashes.
  */
-#define CMARK_OPT_SAFE 32
+#define CMARK_OPT_SMART 1 << 10
 
 /**
  * ## Version information