diff --git a/plugins/plugin-md-power/__test__/__snapshots__/audioReader.spec.ts.snap b/plugins/plugin-md-power/__test__/__snapshots__/audioReader.spec.ts.snap
new file mode 100644
index 00000000..0d0ded7b
--- /dev/null
+++ b/plugins/plugin-md-power/__test__/__snapshots__/audioReader.spec.ts.snap
@@ -0,0 +1,20 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`artPlayerPlugin > should not work 1`] = `
+"
@[audioReader @audioReader
+@[audioReader]xxx
+@[ audioReader](123456
+@[audioReader]((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()
+@ audioReader xxx
+@audioReader xxx
+@[audioReader](javascript:alert(1)) xxx
+"
+`;
+
+exports[`artPlayerPlugin > should work 1`] = `
+"
+title
+
+xxx xxx
+"
+`;
diff --git a/plugins/plugin-md-power/__test__/audioReader.spec.ts b/plugins/plugin-md-power/__test__/audioReader.spec.ts
new file mode 100644
index 00000000..15edafbc
--- /dev/null
+++ b/plugins/plugin-md-power/__test__/audioReader.spec.ts
@@ -0,0 +1,48 @@
+import MarkdownIt from 'markdown-it'
+import { describe, expect, it } from 'vitest'
+import { audioReaderPlugin } from '../src/node/embed/audio/reader.js'
+
+function createMarkdown() {
+ return MarkdownIt().use((md) => {
+ md.block.ruler.before('code', 'import_code', () => false)
+ md.renderer.rules.import_code = () => ''
+ }).use(audioReaderPlugin)
+}
+
+describe('artPlayerPlugin', () => {
+ it('should work', () => {
+ const md = createMarkdown()
+ const code = `\
+@[audioReader](/xxx.mp3) @[audioReader](/xxx.mp3)
+
+@[audioReader autoplay title="title"](/xxx.mp3)
+
+@[audioReader autoplay start-time="0" end-time="99" volume="0.55"](/xxx.mp3)
+
+xxx @[audioReader type="audio/mp3"](/xxx.mp3) xxx
+`
+
+ expect(md.render(code)).toMatchSnapshot()
+ })
+
+ it('should not work', () => {
+ const md = createMarkdown()
+ const code = `\
+@[audioReader @[audioReader]()
+
+@[audioReader]xxx
+
+@[ audioReader](123456
+
+@[audioReader]((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()
+
+@[ audioReader](/xxx.mp3) xxx
+
+@[audioReader]( xxx.mp3) xxx
+
+@[audioReader](javascript:alert(1)) xxx
+`
+
+ expect(md.render(code)).toMatchSnapshot()
+ })
+})
diff --git a/plugins/plugin-md-power/src/node/embed/audio/reader.ts b/plugins/plugin-md-power/src/node/embed/audio/reader.ts
index d8f81659..b002ea59 100644
--- a/plugins/plugin-md-power/src/node/embed/audio/reader.ts
+++ b/plugins/plugin-md-power/src/node/embed/audio/reader.ts
@@ -43,14 +43,18 @@ const audioReader: RuleInline = (state, silent) => {
return false
}
}
+ else {
+ return false
+ }
+ /* istanbul ignore else -- @preserve */
if (!silent) {
state.pos = labelStart
state.posMax = labelEnd
const info = state.src.slice(labelStart, labelEnd).trim()
const { attrs } = resolveAttrs(info)
- const tokenOpen = state.push('audio_reader_open', 'audioReader', 1)
+ const tokenOpen = state.push('audio_reader_open', 'AudioReader', 1)
tokenOpen.info = info
tokenOpen.attrs = [['src', href]]
@@ -69,7 +73,7 @@ const audioReader: RuleInline = (state, silent) => {
if (attrs.title)
state.push('text', '', 0).content = attrs.title
- state.push('audio_reader_close', 'audioReader', -1)
+ state.push('audio_reader_close', 'AudioReader', -1)
}
state.pos = pos + 1