Add wavedrom support (#655)

This commit is contained in:
Riff 2023-05-23 06:39:17 -07:00 committed by GitHub
parent 2d64661e5d
commit 01e518a39f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 62 additions and 0 deletions

View File

@ -532,6 +532,9 @@ mermaid:
light: default light: default
dark: dark dark: dark
# WaveDrom tag
wavedrom:
enable: false
# --------------------------------------------------------------- # ---------------------------------------------------------------
# Third Party Plugins & Services Settings # Third Party Plugins & Services Settings

View File

@ -172,3 +172,13 @@ creative_commons:
version: 2020.11.3 version: 2020.11.3
dir: assets/license_badges dir: assets/license_badges
alias: creativecommons-vocabulary alias: creativecommons-vocabulary
wavedrom:
name: wavedrom
version: 3.2.0
file: wavedrom.min.js
integrity: sha512-/ZL0uQxVV1wYyWlpO4klZ1a39eaBz4zESSamuBMaMsZ6le3YejJ07hmLlHoCTXrKz5eYtEuO5K1BcTo+lQpQJA==
wavedrom_skin:
name: wavedrom
version: 3.2.0
file: skins/default.js
integrity: sha512-GV5gOBpCHd3M5Af9Ooz+I9dQdwcDKPR2F8ulzCpoF4W6uwmtLTh/pT8Q1XupPmQJO+Kt88/DrIiK7PzR1YLvwQ==

View File

@ -14,6 +14,7 @@
{%- include 'tags/pdf.njk' -%} {%- include 'tags/pdf.njk' -%}
{%- include 'tags/mermaid.njk' -%} {%- include 'tags/mermaid.njk' -%}
{%- include 'tags/wavedrom.njk' -%}
{%- include 'fancybox.njk' -%} {%- include 'fancybox.njk' -%}
{%- include 'pace.njk' -%} {%- include 'pace.njk' -%}

9
layout/_third-party/tags/wavedrom.njk vendored Normal file
View File

@ -0,0 +1,9 @@
{%- if theme.wavedrom.enable %}
{{ next_data('wavedrom', theme.wavedrom, {
js: theme.vendors.wavedrom
}) }}
{{ next_data('wavedrom_skin', theme.wavedrom, {
js: theme.vendors.wavedrom_skin
}) }}
{{ next_js('third-party/tags/wavedrom.js') }}
{%- endif %}

View File

@ -137,6 +137,10 @@ hexo.extend.filter.register('after_generate', () => {
hexo.route.remove('js/third-party/tags/pdf.js'); hexo.route.remove('js/third-party/tags/pdf.js');
} }
if (!theme.wavedrom.enable) {
hexo.route.remove('js/third-party/tags/wavedrom.js');
}
// Others // Others
if (!theme.fancybox) { if (!theme.fancybox) {
hexo.route.remove('js/third-party/fancybox.js'); hexo.route.remove('js/third-party/fancybox.js');

View File

@ -35,6 +35,10 @@ const mermaid = require('./mermaid');
hexo.extend.tag.register('mermaid', mermaid, true); hexo.extend.tag.register('mermaid', mermaid, true);
const wavedrom = require('./wavedrom');
hexo.extend.tag.register('wavedrom', wavedrom, true);
const postNote = require('./note')(hexo); const postNote = require('./note')(hexo);
hexo.extend.tag.register('note', postNote, true); hexo.extend.tag.register('note', postNote, true);

11
scripts/tags/wavedrom.js Normal file
View File

@ -0,0 +1,11 @@
/**
* wavedrom.js | https://theme-next.js.org/docs/tag-plugins/wavedrom
*/
'use strict';
module.exports = function(args, content) {
return `<div class="wavedrom"><script type="WaveDrom">
${content}
</script></div>`;
};

View File

@ -3,6 +3,7 @@
@import 'label'; @import 'label';
@import 'link-grid'; @import 'link-grid';
@import 'mermaid'; @import 'mermaid';
@import 'wavedrom';
@import 'note'; @import 'note';
@import 'pdf'; @import 'pdf';
@import 'tabs'; @import 'tabs';

View File

@ -0,0 +1,6 @@
if (hexo-config('wavedrom.enable')) {
.wavedrom {
margin-bottom: 20px;
text-align: center;
}
}

13
source/js/third-party/tags/wavedrom.js vendored Normal file
View File

@ -0,0 +1,13 @@
/* global NexT, CONFIG, WaveDrom */
document.addEventListener('page:loaded', () => {
NexT.utils.getScript(CONFIG.wavedrom.js, {
condition: window.WaveDrom
}).then(() => {
NexT.utils.getScript(CONFIG.wavedrom_skin.js, {
condition: window.WaveSkin
}).then(() => {
WaveDrom.ProcessAll();
});
});
});