init
This commit is contained in:
parent
83db432baa
commit
b319a665b2
19
index.js
Normal file
19
index.js
Normal file
@ -0,0 +1,19 @@
|
||||
'use strict';
|
||||
|
||||
/* global hexo */
|
||||
|
||||
const mermaid = require('./mermaid.js');
|
||||
|
||||
hexo.config.mermaid = Object.assign({
|
||||
mmdcPath: 'mmdc',
|
||||
timeout: 5000,
|
||||
theme: 'default',
|
||||
width: 800,
|
||||
height: 600,
|
||||
format: 'svg',
|
||||
background: 'white',
|
||||
scale: 1
|
||||
},
|
||||
hexo.config.mermaid);
|
||||
|
||||
hexo.extend.tag.register('mermaid', mermaid(hexo.config.mermaid), { ends = true });
|
57
lib/mermaid.js
Normal file
57
lib/mermaid.js
Normal file
@ -0,0 +1,57 @@
|
||||
'use strict';
|
||||
|
||||
const { spawnSync } = require('node:child_process');
|
||||
|
||||
function mermaid(config) {
|
||||
return function(args, content) {
|
||||
let options = Object.assign({}, config);
|
||||
let caption = '';
|
||||
for (const arg in args) {
|
||||
const arr = arg.split(':');
|
||||
if (arr.length == 1) {
|
||||
caption = arr;
|
||||
} else {
|
||||
const { key, val } = arr;
|
||||
options[key] = val;
|
||||
}
|
||||
}
|
||||
|
||||
const args = [
|
||||
'-t', options.theme || 'default',
|
||||
'-w', options.width || 800,
|
||||
'-H', options.height || 600,
|
||||
'-e', options.format || 'svg',
|
||||
'-b', options.background || 'white',
|
||||
'-s', options.scale || 1,
|
||||
'-i', '-',
|
||||
'-o', '-'
|
||||
];
|
||||
|
||||
const result = spawnSync(options.mmdcPath, args, {
|
||||
cwd: process.cwd(),
|
||||
env: process.env,
|
||||
input: content,
|
||||
encoding: 'utf8',
|
||||
timeout: options.timeout
|
||||
});
|
||||
|
||||
if (result.status === 0) {
|
||||
if (result.stderr) {
|
||||
console.warn(result.stderr);
|
||||
}
|
||||
const path = 'data:image/svg+xml;base64,' + Buffer.from(result.stdout).toString('base64');
|
||||
|
||||
if (caption != '') {
|
||||
return `<figure><img src="${ path }" alt="${ caption }"/><figcaption>${ caption }</figcaption></figure>`
|
||||
} else {
|
||||
return `<p><image src="${ path }"/></p>`;
|
||||
}
|
||||
}
|
||||
if (result.error) {
|
||||
throw result.error;
|
||||
}
|
||||
throw Error('mmdc exited with code ' + result.status + (result.stderr ? ': ' + result.stderr : '.'));
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = mermaid;
|
24
package.json
Normal file
24
package.json
Normal file
@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "hexo-tag-mermaid",
|
||||
"version": "0.0.0",
|
||||
"description": "add mermaid diagrams support for hexo.",
|
||||
"homepage": "https://git.gzezfisher.top/FISHER_/hexo-tag-mermaid",
|
||||
"bugs": {
|
||||
"url": "https://git.gzezfisher.top/FISHER_/hexo-tag-mermaid/issues"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://git.gzezfisher.top/FISHER_/hexo-tag-mermaid.git"
|
||||
},
|
||||
"main": "index.js",
|
||||
"files": [
|
||||
"lib"
|
||||
],
|
||||
"contributers": [],
|
||||
"tags": [
|
||||
"hexo",
|
||||
"plugin",
|
||||
"mermaid"
|
||||
],
|
||||
"dependencies": {}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user