aboutsummaryrefslogblamecommitdiffstats
path: root/readme.md
blob: 4143e39736ebd262634f702c34892363c2297483 (plain) (tree)
1
2
3
4
5
6
7
8
9
10

              




                                                                                 
 

        
        
 
                                                   
 
            
 
                                                                 


                                                                
 
        
 
                                              

                                                                                        
 
        
 


                                                                

                                                                               

                                                                                 

                                           


                       
              
 

                                                                              
 
                                         






















                                                                                                                             
 
          
 

                                                                                
 
















                                                       
                                                                                                                  














                                        


                                                  
# micromark-rs

A [CommonMark][] compliant, `no_std` + `alloc`, markdown parser, with extensions,
in Rust.

Crate docs currently at
[`wooorm.com/micromark-rs/micromark/`][docs].

## To do

### Docs

- [ ] (1) Add overview docs on how everything works

### Refactor

- [ ] (1) Improve `interrupt`, `concrete`, `lazy` fields somehow?
- [ ] (?) Remove last box: the one around the child tokenizer?
- [ ] (1) Add helper to get byte at, get char before/after, etc.
- [ ] (?) Use smaller things that usizes?

### Test

- [ ] (1) Make sure positional info is perfect
- [ ] (3) Share tests with `micromark-js`
- [ ] (3) Add tests for a zillion attention markers, tons of lists, tons of labels, etc?

### Misc

- [ ] (?) Improve document performance (potential 50%)
- [ ] (?) Improve paragraph performance (potential 15%)
- [ ] (?) Improve label (link, image) performance (potential 7%)
- [ ] (3) Read through rust docs to figure out what useful functions there are,
      and fix stuff I’m doing manually now
- [ ] (5) Do some research on rust best practices for APIs, e.g., what to accept,
      how to integrate with streams or so?
- [ ] (3) Write comparison to other parsers
- [ ] (3) Add node/etc bindings?
- [ ] (3) Bunch of docs
- [ ] (5) Site

### Extensions

The extensions below are listed from top to bottom from more important to less
important.

- [x] (1) frontmatter (yaml, toml) (flow)
      — [`micromark-extension-frontmatter`](https://github.com/micromark/micromark-extension-frontmatter)
- [ ] (3) autolink literal (GFM) (text)
      — [`micromark-extension-gfm-autolink-literal`](https://github.com/micromark/micromark-extension-gfm-autolink-literal)
- [ ] (3) footnote (GFM) (flow, text)
      — [`micromark-extension-gfm-footnote`](https://github.com/micromark/micromark-extension-gfm-footnote)
- [ ] (3) strikethrough (GFM) (text)
      — [`micromark-extension-gfm-strikethrough`](https://github.com/micromark/micromark-extension-gfm-strikethrough)
- [ ] (5) table (GFM) (flow)
      — [`micromark-extension-gfm-table`](https://github.com/micromark/micromark-extension-gfm-table)
- [ ] (1) task list item (GFM) (text)
      — [`micromark-extension-gfm-task-list-item`](https://github.com/micromark/micromark-extension-gfm-task-list-item)
- [ ] (3) math (flow, text)
      — [`micromark-extension-math`](https://github.com/micromark/micromark-extension-math)
- [ ] (8) directive (flow, text)
      — [`micromark-extension-directive`](https://github.com/micromark/micromark-extension-directive)
- [ ] (8) expression (MDX) (flow, text)
      — [`micromark-extension-mdx-expression`](https://github.com/micromark/micromark-extension-mdx-expression)
- [ ] (5) JSX (MDX) (flow, text)
      — [`micromark-extension-mdx-jsx`](https://github.com/micromark/micromark-extension-mdx-jsx)
- [ ] (3) ESM (MDX) (flow)
      — [`micromark-extension-mdxjs-esm`](https://github.com/micromark/micromark-extension-mdxjs-esm)
- [ ] (1) tagfilter (GFM) (n/a, renderer)
      — [`micromark-extension-gfm-tagfilter`](https://github.com/micromark/micromark-extension-gfm-tagfilter)

#### After

- [ ] (8) After all extensions, including MDX, are done, see if we can integrate
      this with SWC to compile MDX

## Scripts

Run examples:

```sh
RUST_BACKTRACE=1 RUST_LOG=debug cargo run --example lib
```

Format:

```sh
cargo fmt --all
```

Lint:

```sh
cargo fmt --all -- --check && cargo clippy -- -D clippy::pedantic -D clippy::cargo -A clippy::doc_link_with_quotes
```

Tests:

```sh
RUST_BACKTRACE=1 cargo test
```

Docs:

```sh
cargo doc --document-private-items
```

(add `--open` to open them in a browser)

[commonmark]: https://spec.commonmark.org
[docs]: https://wooorm.com/micromark-rs/micromark/