summaryrefslogtreecommitdiff
path: root/src/inlines.c
AgeCommit message (Collapse)Author
2015-06-17Added assertion to peek_char to catch any stray NULLs.John MacFarlane
Note that our current procedure for removing nulls is not working properly.
2015-06-16Small code simplification in inlines.c.John MacFarlane
Use S_is_line_end_char.
2015-06-16skip_spaces: skip tabs too.John MacFarlane
2015-06-16Don't rtrim in subject_from_buffer.John MacFarlane
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.)
2015-06-15Fixed cases likeJohn MacFarlane
``` [ref]: url "title" ok ``` Here we should parse the first line as a reference.
2015-06-15inlines.c: Added utility functions to skip spaces and line endings.John MacFarlane
2015-06-11Small logic fixes and a simplification in process_emphasis.John MacFarlane
2015-06-11Fixed `process_emphasis` to handle new pathological cases.John MacFarlane
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.
2015-06-10More code simplification.John MacFarlane
2015-06-10Code simplification.John MacFarlane
2015-06-10process_inlines: remove closers from delim stack when possible.John MacFarlane
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.
2015-06-07Convert code base to strbuf_tNick Wellnhofer
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.
2015-06-06astyle formatting changes.John MacFarlane
2015-06-04Don't allow link labels with no non-whitespace characters.John MacFarlane
See jgm/CommonMark#322.
2015-06-03Merge branch 'master' of https://github.com/btrask/cmark into btrask-masterJohn MacFarlane
Conflicts: src/blocks.c
2015-05-14Store link URL and title as cmark_chunkNick Wellnhofer
2015-04-27Fixed _ emphasis parsing to conform to spec.John MacFarlane
See jgm/CommonMark#317.
2015-04-07Add CRLF/CR handling to inlines.c.Ben Trask
2015-03-30Fixed memory issue.John MacFarlane
This fixes valgrind "invalid read of size 1" on input `[link](<>)`.
2015-03-03astyle changes.John MacFarlane
2015-02-18Repacked delimiter struct to avoid hole.John MacFarlane
2015-02-17Moved a test outside a loop.John MacFarlane
2015-02-16Rename CMARK_OPT_SMARTPUNCT -> CMARK_OPT_SMART.John MacFarlane
2015-02-16Made 'options' an int rather than a long.John MacFarlane
For consistency with the API.
2015-02-16Use ascii escapes for punctuation characters for portability.John MacFarlane
2015-02-16Properly handle " with no matching close quote with --smart.John MacFarlane
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.
2015-02-15Moved handling of --smart from renderer to parser.John MacFarlane
This allows backslash escapes to disable smart quote transformations in particular cases. Closes #8.
2015-02-15Added options parameter to cmark_parse_document, cmark_parse_file.John MacFarlane
Also to some non-exported functions in blocks and inlines.
2015-02-14astyle changes (code formatting only).John MacFarlane
2015-01-18Changed rule for `_` emphasis and strong emphasis.John MacFarlane
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.
2015-01-05Reformatted code consistently with astyle.John MacFarlane
2014-12-29Renamed a couple variables.John MacFarlane
2014-12-29Added cmark_ prefix to functions in cmark_ctype.John MacFarlane
2014-12-29Added cmark_ctype.h with locale-independent isspace, ispunct, etc.John MacFarlane
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.
2014-12-26Optimized the change in 72a556fd3bd17feaffba2fb6faa8c8f2a3931643.John MacFarlane
Thanks @Knagis.
2014-12-25Updated C parser to handle #252.John MacFarlane
Closes #252.
2014-12-25Improved rules for emphasis and strong emphasis.John MacFarlane
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.
2014-12-15Re-added cmark_ prefix to strbuf and chunk.John MacFarlane
Reverts 225d720.
2014-12-14Added comment.John MacFarlane
2014-12-14Use UTF-8 sensitive functions to check for spaces around emph markers.John MacFarlane
2014-12-14Rename CMARK_NODE_INLINE_CODE -> CMARK_NODE_CODE.John MacFarlane
2014-12-13Removed cmark_ prefix on chunk and strbuf.John MacFarlane
This isn't needed any more since we don't expose these in the API.
2014-12-04Moved source files from src/html into src.John MacFarlane
The separate directory presents problems for some simple extension building systems, like luarocks.
2014-11-30Rename member first_inline to inl_text in struct delimiterNick Wellnhofer
2014-11-30Eliminate delim_count in struct delimiterNick Wellnhofer
Use literal length instead.
2014-11-30Simplify remove_delimiterNick Wellnhofer
2014-11-30Simplify push_delimiterNick Wellnhofer
Always modify the subject when pushing a delimiter.
2014-11-30Rename delimiter_stack to delimiterNick Wellnhofer
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.
2014-11-29Merge pull request #227 from nwellnhof/process_emphJohn MacFarlane
Optimize and clarify process_emph
2014-11-29Check for `[` character in `link_label`.John MacFarlane
Closes #226.