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

Change to use micromark #536

Merged
merged 11 commits into from Oct 13, 2020
Merged

Change to use micromark #536

merged 11 commits into from Oct 13, 2020

Commits on Oct 1, 2020

  1. Change to use micromark

    This is a giant change for remark.
    It replaces the 5+ year old internals with a new low-level parser:
    <https://github.com/micromark/micromark>
    The old internals have served billions of users well over the years, but
    markdown has changed over that time.
    micromark comes with 100% CommonMark (and GFM as an extension) compliance,
    and (WIP) docs on parsing rules for how to tokenize markdown with a state
    machine: <https://github.com/micromark/common-markup-state-machine>.
    micromark, and micromark in remark, is a good base for the future.
    
    `remark-parse` now defers its work to [`micromark`][micromark] and
    [`mdast-util-from-markdown`][from-markdown].
    `micromark` is a new, small, complete, and CommonMark compliant low-level
    markdown parser.
    `from-markdown` turns its tokens into the previously (and still) used syntax
    tree: [mdast][].
    Extensions to `remark-parse` work differently: they’re a two-part act.
    See for example [`micromark-extension-footnote`][micromark-footnote] and
    [`mdast-util-footnote`][from-markdown-footnote].
    
    * change: `commonmark` is no longer an option — it’s the default
    * move: `gfm` is no longer an option — moved to `remark-gfm`
    * remove: `pedantic` is no longer an option — this legacy and buggy flavor of
      markdown is no longer widely used
    * remove: `blocks` is no longer an options — it’s no longer suggested to
      change the internal list of HTML “block” tag names
    
    remark-stringify now defers its work to [`mdast-util-to-markdown`][to-markdown].
    It’s a new and better serializer with powerful features to ensure serialized
    markdown represents the syntax tree (mdast), no matter what plugins do.
    Extensions to it work differently: see for example
    [`mdast-util-footnote`][to-markdown-footnote].
    
    * change: `commonmark` is no longer an option, it’s the default
    * change: `emphasis` now defaults to `*`
    * change: `bullet` now defaults to `*`
    * move: `gfm` is no longer an option — moved to `remark-gfm`
    * move: `tableCellPadding` — moved to `remark-gfm`
    * move: `tablePipeAlign` — moved to `remark-gfm`
    * move: `stringLength` — moved to `remark-gfm`
    * remove: `pedantic` is no longer an option — this legacy and buggy flavor of
      markdown is no longer widely used
    * remove: `entities` is no longer an option — with CommonMark there is almost
      never a need to use character references, as character escapes are preferred
    * new: `quote` — you can now prefer single quotes (`'`) over double quotes
      (`"`) in titles
    
    All of these are for CommonMark compatibility.
    Most of them are inconsequential.
    
    * **notable**: references (as in, links `[text][id]` and images `![alt][id]`)
      are no longer present as such in the syntax tree if they don’t have a
      corresponding definition (`[id]: example.com`).
      The reason for this is that CommonMark requires `[text *emphasis
      start][undefined] emphasis end*` to be emphasis.
    * **notable**: it is no longer possible to use two blank lines between two
      lists or a list and indented code.
      CommonMark prohibits it.
      For a solution, use an empty comment to end lists (`<!---->`)
    * inconsequential: whitespace at the start and end of lines in paragraphs is
      now ignored
    * inconsequential: `<mailto:foobarbaz>` are now correctly parsed, and the
      scheme is part of the tree
    * inconsequential: indented code can now follow a block quote w/o blank line
    * inconsequential: trailing indented blank lines after indented code are no
      longer part of that code
    * inconsequential: character references and escapes are no longer present as
      separate text nodes
    * inconsequential: character references which HTML allows but CommonMark
      doesn’t, such as `&copy` w/o the semicolon, are no longer recognized
    * inconsequential: the `indent` field is no longer available on `position`
    * fix: multiline setext headings
    * fix: lazy lists
    * fix: attention (emphasis, strong)
    * fix: tabs
    * fix: empty alt on images is now present as an empty string
    * …plus a ton of other minor previous differences from CommonMark
    
    * get folks to use this and report problems!
    
    * make `remark-gfm`
    * start making next branches for plugins
    * get types into {from,to}-markdown and use them here
    
    Closes GH-218.
    Closes GH-306.
    Closes GH-315.
    Closes GH-324.
    Closes GH-398.
    Closes GH-402.
    Closes GH-407.
    Closes GH-439.
    Closes GH-450.
    Closes GH-459.
    Closes GH-493.
    Closes GH-494.
    Closes GH-497.
    Closes GH-504.
    Closes GH-517.
    Closes GH-521.
    Closes GH-523.
    
    Closes remarkjs/remark-lint#111.
    
    [micromark]: https://github.com/micromark/micromark
    
    [from-markdown]: https://github.com/syntax-tree/mdast-util-from-markdown
    
    [to-markdown]: https://github.com/syntax-tree/mdast-util-to-markdown
    
    [micromark-footnote]: https://github.com/micromark/micromark-extension-footnote/blob/main/index.js
    
    [to-markdown-footnote]: https://github.com/syntax-tree/mdast-util-footnote/blob/main/to-markdown.js
    
    [from-markdown-footnote]: https://github.com/syntax-tree/mdast-util-footnote/blob/main/from-markdown.js
    
    [mdast]: https://github.com/syntax-tree/mdast
    wooorm committed Oct 1, 2020
    Copy the full SHA
    ceca279 View commit details
    Browse the repository at this point in the history

Commits on Oct 2, 2020

  1. remark-parse: 9.0.0-alpha.0

    wooorm committed Oct 2, 2020
    Copy the full SHA
    1cc1519 View commit details
    Browse the repository at this point in the history
  2. Copy the full SHA
    5cf3f72 View commit details
    Browse the repository at this point in the history
  3. 13.0.0-alpha.0

    wooorm committed Oct 2, 2020
    Copy the full SHA
    bc62ed8 View commit details
    Browse the repository at this point in the history
  4. remark-cli: 9.0.0-alpha.0

    wooorm committed Oct 2, 2020
    Copy the full SHA
    e4d27fc View commit details
    Browse the repository at this point in the history

Commits on Oct 3, 2020

  1. Remove ancient plugins

    Some plugins in the list of plugins were not updated in the last
    3 or so years, this commit removes ’em.
    wooorm committed Oct 3, 2020
    Copy the full SHA
    39a2f23 View commit details
    Browse the repository at this point in the history
  2. Update hooks for extensions

    wooorm committed Oct 3, 2020
    Copy the full SHA
    110dd4e View commit details
    Browse the repository at this point in the history
  3. remark-parse: 9.0.0-alpha.1

    wooorm committed Oct 3, 2020
    Copy the full SHA
    739e4eb View commit details
    Browse the repository at this point in the history
  4. Copy the full SHA
    2830230 View commit details
    Browse the repository at this point in the history
  5. 13.0.0-alpha.1

    wooorm committed Oct 3, 2020
    Copy the full SHA
    cad70e8 View commit details
    Browse the repository at this point in the history
  6. remark-cli: 9.0.0-alpha.1

    wooorm committed Oct 3, 2020
    Copy the full SHA
    2982d81 View commit details
    Browse the repository at this point in the history