2.0.2 • Published 2 years ago
rehype-plugin-image-alt-extends v2.0.2
rehype-plugin-image-alt-extends
A rehype plugin for adding properties of image in alt.
Install
npm install rehype-plugin-image-alt-extends
Usage
Add id
, class
, width
, height
and properties for image element.
import fs from 'fs'
import imageAltExtendsplugin from 'rehype-plugin-image-alt-extends'
import unified from 'unified'
import markdown from 'remark-parse'
import remark2rehype from 'remark-rehype'
import html from 'rehype-stringify'
async function process(markdown: string) {
return new Promise((resolve, reject) => {
unified()
.use(markdown)
.use(remark2rehype)
.use(imageAltExtendsplugin)
.use(html)
.process(markdown, (err, file) => {
if (err) {
return reject(err)
}
return resolve(file.toString())
})
})
}
async function run() {
const input = ''
const output = await process(input)
console.log(output) // <p><img src="http://example.com/logo.png" alt="logo" loading="lazy" id="img" class="banner logo" width="400.5" height="300.5"></p>
}
Extended rules
There are four extended rules:
- id rule:
#id
- classname rule:
.classname
- property rule:
key=val
- size rule:
500.5x300
- All rules must be separated by spaces.
 <!-- Good -->
[logo||#img400x400](http://example.com/logo.png) <!-- Bad, 400x400 will be a part of id -->
- We use
trim()
andsplit(/\s+/)
to split syntax slices. So you could have spaces in the beginning or ending and the count of spaces is not important:

- No fixed order, below two have same output.


- Size rule support decimal:

- If there is no content after the
||
, it will not be parsed as extended grammar.

<!-- output -->
<img src="http://example.com/logo.png" alt="logo||" />
- If there is an error in the extended syntax, then instead of continuing parsing, it returns original alt.

<!-- output, lazy_loading is invalid syntax -->
<img src="http://example.com/logo.png" alt="logo||#logo lazy_loading" />
- id rule and size rule can only appear once, otherwise it won't parse:

<!-- output, duplicate id rule -->
<img src="http://example.com/logo.png" alt="logo||#logo #logo1" />

<!-- output, duplicate size rule -->
<img src="http://example.com/logo.png" alt="logo||500x300 500x300" />
LICENCE
MIT