feat(cli): support mermaid diagrams within GFM (github flavored markdown) #16
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Draft PR: This PR is stacked on top of:
pull
/push
/link
on multiple mermaid files at once #15, which is stacked on top of@mermaidchart/cli
CLI tool for accessing Mermaid Chart #12, which is stacked on top ofsetDocument(document)
API function #11, which is stacked on top ofdeleteDocument(documentID)
API func #10, which is stacked on top ofcreateDocument(projectID)
API function #9.Please change this PR to target
main
once #15 has been merged.📖 Description
Support mermaid diagrams that are embedded within GFM (GitHub flavoured markdown)
.md
or.markdown
markdown files.Example
For example, given a markdown file that looks like:
After running
mermaid-chart link ./path/to/my/markdown/file.md
, we'd expect the output file to look like:Implementation details
We're using remark to parse the markdown into a markdown AST. remark by default only supports CommonMark, however, with remark-gfm and remark-frontmatter we can support GFM (GitHub flavoured markdown, which is used by GitHub.
From this, we process every code block that has
lang=mermaid
, then turn the mdAST back to a string.This means that we also automatically format/prettify the user's markdown input, which is potentially unideal, as it might break somebody's markdown file if they're using an unusual dialect of markdown, but I can't think of a better way to do this.