https://github.com/flaque/mark-dom
A query API for markdown
https://github.com/flaque/mark-dom
Last synced: 11 days ago
JSON representation
A query API for markdown
- Host: GitHub
- URL: https://github.com/flaque/mark-dom
- Owner: Flaque
- Created: 2017-07-21T03:40:15.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2017-07-29T23:31:05.000Z (almost 8 years ago)
- Last Synced: 2025-04-03T01:41:28.295Z (about 2 months ago)
- Language: JavaScript
- Size: 735 KB
- Stars: 11
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# mark-dom
[](https://travis-ci.org/Flaque/mark-dom)
[](https://coveralls.io/github/Flaque/mark-dom?branch=master)Mark-dom is basically jQuery but for markdown.
If you've ever wanted to write a script that only edits a single part of a markdown doc and leaves the rest alone, then hopefully this brings you joy.
[Docs Here.](https://flaque.github.io/mark-dom/MarkdownNode.html)
## Install
```
$ npm install mark-dom
```## Example
### Our Example Markdown
``` markdown# Hello there
I am some markdown## Dogs are cool
They bring you friendly joy.## World peace is cool
Let's bake some cakes and be nice to each other
```### Get a header value
``` js
import mrk = require("mark-dom");// Returns "World peace is cool"
mrk(thatMarkdownStr)
.heading("## World peace *")
.value();
```### Change a header
``` js
import mrk = require("mark-dom");// Return a new markdown string where the first header
// is "Stuff that's cool"
mrk(thatMarkdownStr)
.heading() // gets the first heading!
.set("Stuff that's cool");
.getAll();
```### Change an entire paragraph
``` js
import mrk = require("mark-dom");// Change the "dogs" header and return a new markdown string
mrk(thatMarkdownStr)
.heading("## * ") // Get the first sub header
.paragraph()
.set("They make you smile.")
.getAll();
```## Status
Mark-dom is really just an experiment at the moment and I haven't really fleshed out all of the API that I want yet. Things might change, at the time that I'm writing this, I don't think it even works.### TODO list
* ~Glob syntax `*`~
* Find tables
* Find code
* Find lists
* Putting a 2d array in `set()` will create a table
* Putting a 1d array in `set()` will create a list## How's it work?
Mark-dom uses [remark](https://github.com/wooorm/remark/tree/master/packages/remark) and it's ecosystem to parse the markdown into an Abstract Syntax Tree (AST), then it lets you navigate and edit the tree with an API and eventually construct a new markdown document by compiling the tree down to a string.## What's the use case?
* Auto-generating README's
* Forcing standards/style-guides to docs
* ???
* Profit!