Age | Commit message (Collapse) | Author |
|
In JS, use 'Text' instead of 'Str'.
In spec, use "plain textual content" instead of "strings."
|
|
Windows fixes
|
|
Also disable some warnings.
|
|
|
|
Invalid UTF-8 byte sequences are replaced with the Unicode replacement
character U+FFFD. Fixes #213.
|
|
|
|
Technically we could do without this, since we can check for
cmark_fence_length > 0. But it makes the code clearer and doesn't
really increase the size of the node struct (because the size of the
union is set by the data for lists).
|
|
|
|
Use a single CMARK_NODE_CODE_BLOCK tag for both.
Distinguish them when needed for parsing by looking at the
fence_length attribute, which is 0 for indented blocks.
|
|
This reverts commit 4570eb2bff2e1b71fa5b6408abbc69c98ff5ff24.
|
|
|
|
This reverts commit a71423f6ee1b77d9f79d42599ea00b4ca99f5da0.
Not quite sure about this change, so reverting for now.
Note that we still have a distinction between fenced and
indented code blocks in the AST. These two distinctions
seem to stand or fall together.
|
|
Now we just have 'header' -- Setext and ATX are just two ways
of forming these; it's not a semantic difference that should remain
in the AST.
|
|
|
|
The C and JS implementations were not registering blank lines
after atx headers for purposes of tight/loose list calculation.
Exmaple:
* item
* # block1
## block2
|
|
A setext header was being treated a if it were a blank
line for purposes of tight/loose list determination.
Closes #209.
|
|
|
|
They were gobbling whitespace after shortcut reference links,
e.g.
[foo] bar
[foo]: url
Closes #214.
|
|
|
|
|
|
Now that every node has a parent pointer, it's possible to implement
the HTML rendering functions without render stacks and any dynamic
memory allocations.
This commit also adds some minor optimizations that eliminate some
strbuf_put* calls for the common case and avoid printf for headers.
|
|
|
|
|
|
|
|
|
|
Now that we have just one node type, it is not necessary
to have two separate 'push' functions.
|
|
|
|
We'll probably need this when the spec for emph/strong gets
revised.
|
|
More accessors and tests
|
|
|
|
|
|
|
|
These are read-only as they're only metadata returned by the parser.
|
|
|
|
Only fence info should be relevant for rendering. Accessors for other
fenced code data could be added for completeness but they don't seem
very useful.
|
|
Only 'list_type', 'start', and 'tight' should be relevant for rendering.
Accessors for other list data could be added for completeness but they
don't seem very useful.
|
|
|
|
|
|
|
|
Fix copy/paste error.
|
|
The C API tests can be run individually via
build/api_test/api_test
Or together with the spec tests via
cmake --build build --target test
|
|
The approach I'm taking is to copy inline literals internally to
NULL-terminated C strings if requested by an accessor. This allows to
return a 'const char *' that doesn't have to be freed by the caller.
|
|
For empty inline nodes like EMPH, the parser always creates a child
containing an empty string. Using the tree manipulation API, nodes with
no children can be created. Adjust render_html to cope.
|
|
|
|
It doesn't make sense to have a union here, and this simplifies
the code.
|
|
|
|
|
|
|
|
Previously parse_inlines returned a list of parsed inlines.
This had to be added to the parent, and fix_parents had to be
called to manually add the 'parent' links to the children, and
the 'last_child' link to the parent.
Now parse_inlines takes the parent block as a parameter,
and uses cmark_node_append_child to add the children, so that
the pointers should be properly managed. This avoids the need
for the fix_parents pass.
|
|
|