https://github.com/purocean/markdown-it-attributes
An alternate of markdown-it-attr, write by TypeScript, 132x faster! Add classes, identifiers and attributes to your markdown with {} curly brackets, similar to pandoc's header attributes.
https://github.com/purocean/markdown-it-attributes
markdown-it
Last synced: about 1 year ago
JSON representation
An alternate of markdown-it-attr, write by TypeScript, 132x faster! Add classes, identifiers and attributes to your markdown with {} curly brackets, similar to pandoc's header attributes.
- Host: GitHub
- URL: https://github.com/purocean/markdown-it-attributes
- Owner: purocean
- License: mit
- Created: 2022-04-16T10:59:07.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2023-07-20T02:44:49.000Z (almost 3 years ago)
- Last Synced: 2024-04-23T20:44:38.709Z (about 2 years ago)
- Topics: markdown-it
- Language: TypeScript
- Homepage:
- Size: 120 KB
- Stars: 9
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG
- License: LICENSE
Awesome Lists containing this project
README
# Markdown-it-attributes
Add classes, identifiers and attributes to your markdown with {} curly brackets, similar to pandoc's header attributes
An alternate of [markdown-it-attr](https://github.com/arve0/markdown-it-attrs), write by TypeScript, 132x faster!
Note: *Not support css-module and `hr` tag*.
Article: [Yank Note 系列 07 - 性能暴增 132 倍的秘密——重写](https://blog-purocean.vercel.app/yank-note-07/)
**Benchmark**
```
node benchmark.js
simple content ---------- 100001 lines, 300000 characters
no plugin: 51ms
markdown-it-attrs: 183ms
markdown-it-attributes: 52ms
inc: 132x
complex content ---------- 290001 lines, 2668000 characters
no plugin: 393ms
markdown-it-attrs: 2321ms
markdown-it-attributes: 449ms
inc: 34.42857142857143x
compare result ----------
result equal: true
```
## Install
```sh
npm install --save markdown-it-attributes
```
## Usage
```js
var md = require('markdown-it')();
var markdownItAttrs = require('markdown-it-attributes');
md.use(markdownItAttrs, {
// optional, these are default options
leftDelimiter: '{',
rightDelimiter: '}',
allowedAttributes: [] // empty array = all attributes are allowed
});
var src = '# header {.green #id}\nsome text {with=attrs and="attrs with space"}';
var res = md.render(src);
console.log(res);
```