Merge pull request #1598 from luwol03/issue/1597-embed-quotes-bug

fix: allow also " inside of an embed
This commit is contained in:
Joe Pea 2021-06-25 15:42:37 -07:00 committed by GitHub
commit 74f17a0635
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 47 additions and 4 deletions

View File

@ -16,7 +16,7 @@ Then the content of `example.md` will be displayed directly here;
You can check the original content for [example.md](_media/example.md ':ignore').
Normally, this will compiled into a link, but in docsify, if you add `:include` it will be embedded.
Normally, this will compiled into a link, but in docsify, if you add `:include` it will be embedded. You can use single or double quotation marks around as you like.
External links can be used too - just replace the target. If you want to use a gist URL, see [Embed a gist](#embed-a-gist) section.

View File

@ -23,8 +23,8 @@ export function getAndRemoveConfig(str = '') {
if (str) {
str = str
.replace(/^'/, '')
.replace(/'$/, '')
.replace(/^('|")/, '')
.replace(/('|")$/, '')
.replace(/(?:^|\s):([\w-]+:?)=?([\w-%]+)?/g, (m, key, value) => {
if (key.indexOf(':') === -1) {
config[key] = (value && value.replace(/"/g, '')) || true;

View File

@ -1,4 +1,7 @@
const { removeAtag } = require('../../src/core/render/utils');
const {
removeAtag,
getAndRemoveConfig,
} = require('../../src/core/render/utils');
const { tree } = require(`../../src/core/render/tpl`);
@ -16,6 +19,46 @@ describe('core/render/utils', () => {
expect(result).toEqual('content');
});
});
// getAndRemoveConfig()
// ---------------------------------------------------------------------------
describe('getAndRemoveConfig()', () => {
test('parse simple config', () => {
const result = getAndRemoveConfig(
`[filename](_media/example.md ':include')`
);
expect(result).toMatchObject({
config: {},
str: `[filename](_media/example.md ':include')`,
});
});
test('parse config with arguments', () => {
const result = getAndRemoveConfig(
`[filename](_media/example.md ':include :foo=bar :baz test')`
);
expect(result).toMatchObject({
config: {
foo: 'bar',
baz: true,
},
str: `[filename](_media/example.md ':include test')`,
});
});
test('parse config with double quotes', () => {
const result = getAndRemoveConfig(
`[filename](_media/example.md ":include")`
);
expect(result).toMatchObject({
config: {},
str: `[filename](_media/example.md ":include")`,
});
});
});
});
describe('core/render/tpl', () => {