Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix list tightness #479

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Commits on Aug 10, 2023

  1. Add test for list tightness

    taku0 committed Aug 10, 2023
    Configuration menu
    Copy the full SHA
    ae9d580 View commit details
    Browse the repository at this point in the history

Commits on Aug 19, 2023

  1. Defer resolution of link reference definitions

    We must not remove link reference definitions until we check for list
    tightness.  This commit defers resolving of link reference definitions
    until finalization of the document.  We still need to eagerly remove
    link reference definitions in setext headings to determine whether it is
    a setext heading or a thematic break.  So this commit provides slightly
    different functions for resolving link reference definitions and
    checking if a line is blank for `cmark_strbuf` and `cmark_chunk`.
    taku0 committed Aug 19, 2023
    Configuration menu
    Copy the full SHA
    161f7f1 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    00eefd4 View commit details
    Browse the repository at this point in the history
  3. Remove CMARK_NODE__LAST_LINE_CHECKED flag

    This flag was introduced by
    commonmark#284, but we will not need it
    once we update `S_ends_with_blank_line` to not use resursion in the next
    commit.
    taku0 committed Aug 19, 2023
    Configuration menu
    Copy the full SHA
    1e73dea View commit details
    Browse the repository at this point in the history
  4. Fix list tightness

    - Set the end position precisely
    - Check list tightness by comparing line numbers
    - Remove `LAST_LINE_BLANK` flag
    
    See also commonmark/commonmark.js#269 .
    
    Classification of end positions:
    
    - The end of the current line:
      - Thematic breaks
      - ATX headings
      - Setext headings
      - Fenced code blocks closed explicitly
      - HTML blocks (`pre`, comments, and others)
    
    - The end of the previous line:
      - Fenced code blocks closed by the end of the parent or EOF
      - HTML blocks (`div` and others)
      - HTML blocks closed by the end of the parent or EOF
      - Paragraphs
      - Block quotes
      - Empty list items
    
    - The end position of the last child:
      - Non-empty list items
      - Lists
    
    - The end position of the last non-blank line:
      - Indented code blocks
    
    The first two cases are handed by `finalize` and `closed_explicitly` flag.
    
    Non empty list items and lists are handled in `switch` statements in `finalize`.
    
    Indented code blocks are handled by setting the end position every time
    non-blank line is added to the block.
    taku0 committed Aug 19, 2023
    Configuration menu
    Copy the full SHA
    ff0d224 View commit details
    Browse the repository at this point in the history