summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2016-03-26Merge pull request #115 from nwellnhof/tab-fixJohn MacFarlane
Reset partially_consumed_tab on every new line
2016-03-26Open files in binary modeNick Wellnhofer
Now that cmark supports different line endings, files must be openend in binary mode on Windows. Fixes issue #113.
2016-03-26Reset partially_consumed_tab on every new lineNick Wellnhofer
Fixes issue #114.
2016-03-23Doc: clarify that cmark_node_free frees a node's children too.John MacFarlane
2016-03-12Compile in plain C mode with MSVC 12.0 or newerNick Wellnhofer
Under MSVC, we used to compile in C++ mode to get some C99 features like mixing declarations and code. With newer MSVC versions, it's possible to build in plain C mode.
2016-03-12Don't use variable length arraysNick Wellnhofer
They're not supported by MSVC.
2016-03-12Switch from "inline" to "CMARK_INLINE"Nick Wellnhofer
Newer MSVC versions support enough of C99 to be able to compile cmark in plain C mode. Only the "inline" keyword is still unsupported. We have to use "__inline" instead.
2016-02-28Fix ctype(3) usage on NetBSDKamil Rytarowski
We need to cast value passed to isspace(3) to unsigned char to explicitly prevent possibly undefined behavior. /tmp/pkgsrc-tmp/wip/cmark/work/cmark-0.24.1/src/commonmark.c: In function 'S_render_node': /tmp/pkgsrc-tmp/wip/cmark/work/cmark-0.24.1/src/commonmark.c:273:9: warning: array subscript has type 'char' [-Wchar-subscripts] (code_len > 2 && !isspace(code[0]) && ^ /tmp/pkgsrc-tmp/wip/cmark/work/cmark-0.24.1/src/commonmark.c:274:10: warning: array subscript has type 'char' [-Wchar-subscripts] !(isspace(code[code_len - 1]) && isspace(code[code_len - 2]))) && ^ /tmp/pkgsrc-tmp/wip/cmark/work/cmark-0.24.1/src/commonmark.c:274:10: warning: array subscript has type 'char' [-Wchar-subscripts] CTYPE(3) Library Functions Manual CTYPE(3) NAME isalpha, isupper, islower, isdigit, isxdigit, isalnum, isspace, ispunct, isprint, isgraph, iscntrl, isblank, toupper, tolower, - character classification and mapping functions LIBRARY Standard C Library (libc, -lc) CAVEATS The first argument of these functions is of type int, but only a very restricted subset of values are actually valid. The argument must either be the value of the macro EOF (which has a negative value), or must be a non-negative value within the range representable as unsigned char. Passing invalid values leads to undefined behavior. NetBSD 7.99 February 25, 2015 NetBSD 7.99
2016-02-17Update cmark.hChris Eidhof
2016-02-12blocks: More documentation and refactoringMathieu Duponchelle
2016-02-10Removed unnecessary check for empty string_content.John MacFarlane
2016-02-10Revert "Simplified condition for lazy line."John MacFarlane
This reverts commit 4d2d486333c358eb3adf3d0649163e319a3b8b69. This commit caused a valgrind invalid read. ==29731== Invalid read of size 4 ==29731== at 0x40500E: S_process_line (blocks.c:1050) ==29731== by 0x403CF7: S_parser_feed (blocks.c:526) ==29731== by 0x403BC9: cmark_parser_feed (blocks.c:494) ==29731== by 0x433A95: main (main.c:168) ==29731== Address 0x51d5b60 is 64 bytes inside a block of size 128 free'd ==29731== at 0x4C27D4E: free (vg_replace_malloc.c:427) ==29731== by 0x4015F0: S_free_nodes (node.c:134) ==29731== by 0x401634: cmark_node_free (node.c:142) ==29731== by 0x4033B1: finalize (blocks.c:259) ==29731== by 0x40365E: add_child (blocks.c:337) ==29731== by 0x4046D8: try_new_container_starts (blocks.c:836) ==29731== by 0x404F12: S_process_line (blocks.c:1015) ==29731== by 0x403CF7: S_parser_feed (blocks.c:526) ==29731== by 0x403BC9: cmark_parser_feed (blocks.c:494) ==29731== by 0x433A95: main (main.c:168)
2016-02-09Factored out contains_inlines.John MacFarlane
2016-02-09Simplified condition for lazy line.John MacFarlane
2016-02-09Added code comments.John MacFarlane
2016-02-09Added code comment.John MacFarlane
2016-02-06Code cleanup: add function to test for space or tab.John MacFarlane
2016-02-06Use an assertion to check for in-range html_block_type.John MacFarlane
It's a programming error if the type is out of range.
2016-02-06Merge branch 'refactor-S_processLine' of ↵John MacFarlane
https://github.com/MathieuDuponchelle/cmark into MathieuDuponchelle-refactor-S_processLine
2016-02-06Fixed handling of tabs in lists.John MacFarlane
2016-02-07blocks: Factorize S_processLinesMathieu Duponchelle
It's the core of the program and I had too much trouble making sense of it, two loops with many cases and other code interspersed hurt my head. All the tests still passed before rebasing, now I've got the exact same set of issues as master.
2016-02-06Properly handle tabs with blockquotes and fenced blocks.John MacFarlane
2016-02-06Clarify logic in S_advance_offset.John MacFarlane
2016-02-06Generated scanners.c with more recent re2c.John MacFarlane
2016-02-06S_advance_offset: Only set partially_consumed_tab in columns mode.John MacFarlane
2016-02-05Simplified add_line (only need parser parameter).John MacFarlane
2016-02-05Properly handle partially consumed tab.John MacFarlane
E.g. in ``` - foo <TAB><TAB>bar ``` we should consume two spaces from the second tab, including two spaces in the code block.
2016-02-05Added partially_consumed_tab to parser.John MacFarlane
This keeps track of when we have gotten partway through a tab when consuming initial indentation.
2016-02-05Fixed tabs in indentation.John MacFarlane
Closes #101. This patch fixes `S_advance_offset` so that it doesn't gobble a tab character when advancing less than the width of a tab.
2016-01-22Removed an unnecessary C99-ism in buffer.c.John MacFarlane
This helps compiling on systems like luarocks that don't have all the cmake configuration goodness. Thanks to @carlmartus
2016-01-18Include starg.h when needed in config.h.John MacFarlane
2016-01-18config.h: include stdio.h for _vscprintf etc.John MacFarlane
2016-01-18Add include guards to config.hJohn MacFarlane
2016-01-18Automatic code reformat.John MacFarlane
2016-01-18Merge branch 'master' of https://github.com/mbenelli/cmark into mbenelli-masterJohn MacFarlane
2016-01-18config.h.in - added compatibility snprintf, vsnprintf for MSVC.John MacFarlane
2016-01-17commonmark: is_autolink - handle case where link has no children.John MacFarlane
2016-01-17iterator: handle NULL root.John MacFarlane
2016-01-17Improved escaping in commonmark renderer.John MacFarlane
We try not to escape punctuation unless we absolutely have to. So, `)` and `.` are no longer escaped whenever they occur after digits; now they are only escaped if they are geuninely in a position where they'd cause a list item. This required a couple changes to render.c. - `renderer->begin_content` is only set to false AFTER a string of digits at the beginning of the line. (This is slightly unprincipled.) - We never break before a numeral (also slightly unprincipled).
2016-01-17render: initialize begin_content to true.John MacFarlane
2016-01-17Commonmark renderer: use HTML comment to separate list fromJohn MacFarlane
following list or code block. This has several advantages. First, the two blank lines breaks out of list syntax is still controversial in CommonMark. And it isn't used in other implementations. HTML comments will always work. Second, two blank lines breaks out of all lists; an HTML comment can be used to break out of just one level of nesting.
2016-01-17commonmark renderer: use 4-space indent for bullet lists.John MacFarlane
This makes the output compatible with more implementations.
2016-01-16Use 2 space + cr for line break in commonmark output.John MacFarlane
This is more portable. Closes #90.
2016-01-11cmark_node_replace - unlink, but don't free, oldnode.John MacFarlane
2016-01-11Fixed edge case with escaped parens in link destination.John MacFarlane
Closes #97. This was also checked against the #82 case with asan.
2016-01-11Removed unnecessary call to cmark_node_unlink in cmark_node_replace.John MacFarlane
2016-01-11cmark.h: moved typedefs for iterator into iterator section.John MacFarlane
This just moves some code around so it makes more sense to read, and in the man page.
2016-01-10Added cmark_node_replace(oldnode, newnode).John MacFarlane
API change. I've found in using the API that this is very often wanted.
2016-01-10html renderer - removed unnecessary check for 'fenced'.John MacFarlane
It's sufficient to check that the info string is empty. Indeed, those who use the API may well create a code block with an info string without explicitly setting 'fenced'.
2016-01-08Fixed get_containing_block logic in src/commonmark.c.John MacFarlane
This did not allow for the possibility that a node might have no containing block, causing the commonmark renderer to segfault if passed an inline node with no block parent.