summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2015-07-05Added LaTeX renderer.John MacFarlane
* New exported function in API: `cmark_render_latex`. * Added src/latex.hs. * Updated README and man page. * Closes #31.
2015-07-05commonmark writer: correctly handle email autolinks.John MacFarlane
2015-07-03Use utf-8 aware re2c.John MacFarlane
2015-07-03`spec_test.py`: changed default to `spec.txt` (not `test/spec.txt`).John MacFarlane
This doesn't matter, since we specify the argument anyway. But it brings this into sync with the version in CommonMark.
2015-07-01html renderer: properly split info on first space char.John MacFarlane
See jgm/commonmark.js#54.
2015-06-26Merge pull request #61 from txdv/version-functions-ffiJohn MacFarlane
Changed version variables to functions.
2015-06-25Changed version variables to functions.Andrius Bentkus
This is easier to access using ffi, since some languages, like C# like to use only function interfaces for accessing library functionality. fixes #60
2015-06-18Added algorithm.md, informal explanation of emph/link parsing.John MacFarlane
2015-06-18process_emphasis: Fixed setting lower bound to potential openers.John MacFarlane
2015-06-18Rename potential_openers -> openers_bottom.John MacFarlane
2015-06-18Rename start_delim -> stack_bottom.John MacFarlane
2015-06-18Minor astyle reformatting.John MacFarlane
2015-06-17Added case for #59 to pathological_test.py.John MacFarlane
2015-06-17Fixed emphasis/link parsing bug.John MacFarlane
Closes #59.
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-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-17README: added 'make afl' instructions.John MacFarlane
2015-06-17Small changes to README and benchmark files.John MacFarlane
2015-06-17Renamed entities.h -> entities.inc.John MacFarlane
Also tools/make_entities_h.py -> tools/make_entitis_inc.py.
2015-06-16Updated benchmarks.John MacFarlane
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-16Small code simplification in inlines.c.John MacFarlane
Use S_is_line_end_char.
2015-06-16is_blank: recognize tab as a blank character.John MacFarlane
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-16Removed utf8 validation tests.John MacFarlane
We no longer validate utf8 before parsing.
2015-06-16Removed utf8 validation.John MacFarlane
We now replace null characters in the line splitting code.
2015-06-16Updated spec for new tab behavior.John MacFarlane
This change will need to be ported to CommonMark if we do this. We no longer replace spaces with tabs. Rather, we treat tabs as equivalent spaces for purposes of determining structure. Tab stop is still 4. Tabs in the text remain in the text.
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-16spec_tests.py: allow → for tab in HTML examples.John MacFarlane
2015-06-16normalize.py: don't collapse whitespace in pre contexts.John MacFarlane
2015-06-16Simpler approach for entity lookup.John MacFarlane
We dispense with the hashes and just do string comparsions. Since the array is in order, we can search intelligently and should never need to do more than 8 or so comparisons. This reduces binary size even further, at a small cost in performance. (This shouldn't matter too much, as it's only detectable in really entity-heavy sources.)
2015-06-16make_entities_h.py: confirm there are no hash collisions.John MacFarlane
At least with valid data.
2015-06-16Revert "Rebuild src/entities.h when the generating python program changes."John MacFarlane
This reverts commit e113185554c4d775e6fca0596011b405fa1700a5.
2015-06-16Rebuild src/entities.h when the generating python program changes.John MacFarlane
2015-06-16Mark entity data structures as const.John MacFarlane
2015-06-16entities: Make the first entity in the array (TripleDot) work.John MacFarlane
We now use -1 instead of 0 to indicate leaf nodes.
2015-06-16astyle formatting changes.John MacFarlane
2015-06-16Added explanatory note about entities.h in Makefile.John MacFarlane
2015-06-16Replace gperf-based entity lookup with binary tree lookup.John MacFarlane
The primary advantage is a big reduction in the size of the compiled library and executable (> 100K). There should be no measurable performance difference in normal documents. I detected a slight performance hit (around 5%) in a file containing 1,000,000 entities. * Removed `src/html_unescape.gperf` and `src/html_unescape.h`. * Added `src/entities.h` (generated by `tools/make_entities_h.py`). * Added binary tree lookup functions to `houdini_html_u.c`, and use the data in `src/entities.h`.
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-15Updated spec.txt.John MacFarlane
2015-06-13Fixed backslashes in link destinations that are not part of escapes.John MacFarlane
See jgm/commonmark#45.
2015-06-13Updated spec.txt.John MacFarlane
2015-06-13Updated spec.txt.John MacFarlane
2015-06-13Fixed entity lookup table.John MacFarlane
The old one had many errors. The new one is derived from the list in the npm entities package. Since the sequences can now be longer (multi-code-point), we have bumped the length limit from 4 to 8, which also affects houdini_html_u.c. An example of the kind of error that was fixed in given in jgm/commonmark.js#47: `≧̸` should be rendered as "≧̸" (U+02267 U+00338), but it's actually rendered as "≧" (which is the same as `≧`).
2015-06-11Removed "add newline if line doesn't have one."John MacFarlane
This isn't actually needed.
2015-06-11pathological_tests: removed timeout stuff.John MacFarlane
It breaks on Windows.