| 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. | 
|  |  |