summaryrefslogtreecommitdiff
path: root/src/blocks.c
AgeCommit message (Collapse)Author
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-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-07Allow multiline setext header content, as per spec.John MacFarlane
2015-12-28Reformat sources.John MacFarlane
2015-12-28Replaced hard-coded 4 with TAB_STOP.John MacFarlane
2015-12-28Rename NODE_HTML -> NODE_HTML_BLOCK, NODE_INLINE_HTML -> NODE_HTML_INLINE.John MacFarlane
API change. Sorry, but this is the time to break things, before 1.0 is released. This matches the recent changes to CommonMark.dtd.
2015-12-28Use input not parser->curline to determine last line length.John MacFarlane
Ultimately I think we can get rid of parser->curline and avoid an unnecessary allocation per line.
2015-12-22Rename hrule -> thematic_break.John MacFarlane
CMARK_NODE_HRULE -> CMARK_NODE_THEMATIC_BREAK. However we've defined the former as the latter to keep backwards compatibility. See jgm/CommonMark 8fa94cb460f5e516b0e57adca33f50a669d51f6c
2015-12-22CMARK_NODE_HEADER -> CMARK_NODE_HEADING.John MacFarlane
Defined CMARK_NODE_HEADER to CMARK_NODE_HEADING to ease the transition.
2015-12-22Rename 'header' -> 'heading'.John MacFarlane
See jgm/CommonMark commit 0cdbcee4e840abd0ac7db93797b2b75ca4104314 Note that we have defined cmark_node_get_header_level = cmark_node_get_heading_level and cmark_node_set_header_level = camrk_node_set_heading_level for backwards compatibility in the API.
2015-12-19Use fully qualified versions of constants.John MacFarlane
2015-08-10Remove need to disable MSVC warning 4244Kevin Wojniak
2015-08-09Fixed bug with HRULE after blank line.John MacFarlane
This previously caused cmark to break out of a list, thinking it had two consecutive blanks.
2015-08-09Check for empty string before trying to look at line ending.John MacFarlane
2015-08-09Make sure every line fed to S_process_line ends with `\n`.John MacFarlane
So `S_process_line` sees only unix style line endings. Closes #72, avoiding mixed line endings. Ultimately we probably want a better solution, allowing the line ending style of the input file to be preserved. This solution forces output with newlines.
2015-08-08Treat line ending with EOF as ending with newline.John MacFarlane
Closes #71. Added a test to api_test.
2015-08-06Prefix utf8proc functions to avoid conflict with existing libraryKevin Wojniak
2015-07-27Disallow list item starting with multiple blank lines.John MacFarlane
See jgm/CommonMark#332
2015-07-27Use clang-format, llvm style, for formatting.John MacFarlane
* Reformatted all source files. * Added 'format' target to Makefile. * Removed 'astyle' target. * Updated .editorconfig.
2015-07-16Allow tabs before closing ##s in ATX headerJohn MacFarlane
2015-07-14astyle reformatting.John MacFarlane
2015-07-14Limit 'start' to 8 digits to avoid undefined behavior (overflows).John MacFarlane
This should be added to the spec.
2015-07-11Removed dependence on debug.h.John MacFarlane
(It uses GNU extensions, and we don't need it anyway.)
2015-07-10Updates for new HTML block spec.John MacFarlane
* Rewrote spec for HTML blocks. A few other spec examples also changed as a result. * Removed old `html_block_tag` scanner. Added new `html_block_start` and `html_block_start_7`, as well as `html_block_end_n` for n = 1-5. * Rewrote block parser for new HTML block spec.
2015-06-18Minor astyle reformatting.John MacFarlane
2015-06-17Fixed off-by-one error in line splitting routine.John MacFarlane
This caused certain NULLs not to be replaced. Found my 'make fuzztest'.
2015-06-16Added `CMARK_OPT_VALIDATE_UTF8` option.John MacFarlane
Also command line option `--validate-utf8`. This option causes cmark to check for valid UTF-8, replacing invalid sequences with the replacement character, U+FFFD. Reinstated api tests for utf8.
2015-06-16is_blank: recognize tab as a blank character.John MacFarlane
2015-06-16Removed utf8 validation.John MacFarlane
We now replace null characters in the line splitting code.
2015-06-16Renamed utf8proc_detab as utf8proc_check, removed detabbing function.John MacFarlane
Now it just replaces bad UTF-8 sequences and NULLs. This restores benchmarks to near their previous levels.
2015-06-16Preliminary changes for new tab handling.John MacFarlane
We no longer preprocess tabs to spaces before parsing. Instead, we keep track of both the byte offset and the (virtual) column as we parse block starts. This allows us to handle tabs without converting to spaces first. Tabs are left as tabs in the output. Added `column` and `first_nonspace_column` fields to `parser`. Added utility function to advance the offset, computing the virtual column too. Note that we don't need to deal with UTF-8 here at all. Only ASCII occurs in block starts. Significant performance improvement due to the fact that we're not doing UTF-8 validation -- though we might want to add that back in.
2015-06-16astyle formatting changes.John MacFarlane
2015-06-11Removed "add newline if line doesn't have one."John MacFarlane
This isn't actually needed.
2015-06-07Check for overflow in S_parser_feedNick Wellnhofer
Guard against too large chunks passed via the API.
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-06Rename `is_line_end_char` to `S_is_line_end_char`.John MacFarlane
2015-06-06Factored out `S_find_first_nonspace` in `S_proces_line`.John MacFarlane
Added fields `offset`, `first_nonspace`, `indent`, and `blank` to `cmark_parser` struct. This just removes some repetition in the code.
2015-06-06astyle formatting changes.John MacFarlane
2015-06-06Allow new list item container indented > 4 spaces.John MacFarlane
This fixes cases like: ``` 1. a 2. b 3. c ```
2015-06-04Cleaned up with is_line_end_char function.John MacFarlane
2015-06-03Revised "add newline to end if missing" for performance.John MacFarlane
From btrask's alternate code in the comment on https://github.com/jgm/cmark/pull/18. Note: this gives a 1-2% performance boot in our benchmark, probably enough to make it worth while.
2015-06-03Merge branch 'master' of https://github.com/btrask/cmark into btrask-masterJohn MacFarlane
Conflicts: src/blocks.c