Age | Commit message (Collapse) | Author |
|
This gives bad results in parsing reference links,
where we might have trailing blanks.
(finalize in blocks.c removes the bytes parsed as
a reference definition; before this change, some
blank bytes might remain on the line.)
|
|
```
[ref]: url
"title" ok
```
Here we should parse the first line as a reference.
|
|
|
|
|
|
Now we have an array of pointers (`potential_openers`),
keyed to the delim char.
When we've failed to match a potential opener prior to point X
in the delimiter stack, we reset `potential_openers` for that opener
type to X, and thus avoid having to look again through all the openers
we've already rejected.
See jgm/commonmark#43.
|
|
|
|
|
|
When they have no matching openers and cannot be openers themselves,
we can safely remove them.
This helps with a performance case: "a_ " * 20000.
See jgm/commonmark.js#43.
|
|
There are probably a couple of places I missed. But this will only
be a problem if we use a 64-bit bufsize_t at some point. Then, we'll
get warnings from -Wshorten-64-to-32.
|
|
|
|
See jgm/CommonMark#322.
|
|
Conflicts:
src/blocks.c
|
|
|
|
See jgm/CommonMark#317.
|
|
|
|
This fixes valgrind "invalid read of size 1" on
input `[link](<>)`.
|
|
|
|
|
|
|
|
|
|
For consistency with the API.
|
|
|
|
This occurs in fiction: when a speaker has dialogue with
multiple paragraphs, a close quote is used only on the
final one.
Added test cases.
|
|
This allows backslash escapes to disable smart quote
transformations in particular cases.
Closes #8.
|
|
Also to some non-exported functions in blocks and inlines.
|
|
|
|
To prevent intra-word emphasis, we used to check to see if
the delimiter was followed/preceded by an ASCII alphanumeric.
We now do something more elegant: whereas an opening `*` must
be left-flanking, an opening `_` must be left-flanking *and not
right-flanking*. And so on for the other cases.
All the original tests passed except some tests with Russian
text with internal `_`, which formerly created emphasis but no
longer do with the new rule. These tests have been adjusted.
A few new test cases have been added to illustrate the rule.
The C and JS implementations have both been updated.
|
|
|
|
|
|
|
|
Otherwise cmark's behavior varies unpredictably with the locale.
`is_punctuation` in utf8.h has also been adjusted so that everything
that counts all ASCII symbol characters count as punctuation, even
though some are not in P* character classes.
|
|
Thanks @Knagis.
|
|
Closes #252.
|
|
This improves parsing of emphasis around punctuation.
Background:
http://talk.commonmark.org/t/emphasis-inside-strong-broken-in-js-implementation-when-parenthesis-involved/903/6
The basic idea of the change is that if the delimiter is part of
a delimiter clump that has punctuation to the left and a normal
character (non-space, non-punctuation) to the right, it can only
be an opener. If it has punctuation to the right and a normal
character (non-space, non-punctuation) to the left, it can only be a closer.
This handles cases like
**Gomphocarpus (*Gomphocarpus physocarpus*, syn. *Asclepias
physocarpa*)**
and
**foo "*bar*" foo**
better than before.
The spec section on Emphasis and Strong Emphasis has been extensively
revised. The C and JS implementations have been brought up to date,
and all tests pass.
|
|
Reverts 225d720.
|
|
|
|
|
|
|
|
This isn't needed any more since we don't expose these in the API.
|
|
The separate directory presents problems for some simple
extension building systems, like luarocks.
|
|
|
|
Use literal length instead.
|
|
|
|
Always modify the subject when pushing a delimiter.
|
|
The struct actually describes a delimiter. I also find it conceptually
much clearer to think of a doubly linked list of delimiters than a stack.
|
|
Optimize and clarify process_emph
|
|
Closes #226.
|
|
|
|
|
|
Avoid unnecessary malloc/free if opener is removed.
|