mirror of
https://gitee.com/docsifyjs/docsify.git
synced 2024-12-02 03:59:19 +08:00
fix: the sidebar links to another site. (#1336)
* fix : the sidebar links to another site
This commit is contained in:
parent
25bc9b7eb7
commit
c9d4f7abc9
@ -5,7 +5,7 @@ import { tree as treeTpl } from './tpl';
|
||||
import { genTree } from './gen-tree';
|
||||
import { slugify } from './slugify';
|
||||
import { emojify } from './emojify';
|
||||
import { getAndRemoveConfig } from './utils';
|
||||
import { getAndRemoveConfig, removeAtag } from './utils';
|
||||
import { imageCompiler } from './compiler/image';
|
||||
import { highlightCodeCompiler } from './compiler/code';
|
||||
import { paragraphCompiler } from './compiler/paragraph';
|
||||
@ -206,29 +206,29 @@ export class Compiler {
|
||||
*/
|
||||
origin.heading = renderer.heading = function(text, level) {
|
||||
let { str, config } = getAndRemoveConfig(text);
|
||||
const nextToc = { level, title: str };
|
||||
const nextToc = { level, title: removeAtag(str) };
|
||||
|
||||
if (/<!-- {docsify-ignore} -->/g.test(str)) {
|
||||
str = str.replace('<!-- {docsify-ignore} -->', '');
|
||||
nextToc.title = str;
|
||||
nextToc.title = removeAtag(str);
|
||||
nextToc.ignoreSubHeading = true;
|
||||
}
|
||||
|
||||
if (/{docsify-ignore}/g.test(str)) {
|
||||
str = str.replace('{docsify-ignore}', '');
|
||||
nextToc.title = str;
|
||||
nextToc.title = removeAtag(str);
|
||||
nextToc.ignoreSubHeading = true;
|
||||
}
|
||||
|
||||
if (/<!-- {docsify-ignore-all} -->/g.test(str)) {
|
||||
str = str.replace('<!-- {docsify-ignore-all} -->', '');
|
||||
nextToc.title = str;
|
||||
nextToc.title = removeAtag(str);
|
||||
nextToc.ignoreAllSubs = true;
|
||||
}
|
||||
|
||||
if (/{docsify-ignore-all}/g.test(str)) {
|
||||
str = str.replace('{docsify-ignore-all}', '');
|
||||
nextToc.title = str;
|
||||
nextToc.title = removeAtag(str);
|
||||
nextToc.ignoreAllSubs = true;
|
||||
}
|
||||
|
||||
|
@ -1,32 +1,32 @@
|
||||
import { getAndRemoveConfig } from '../utils';
|
||||
import { getAndRemoveConfig, removeAtag } from '../utils';
|
||||
import { slugify } from './slugify';
|
||||
|
||||
export const headingCompiler = ({ renderer, router, _self }) =>
|
||||
(renderer.code = (text, level) => {
|
||||
let { str, config } = getAndRemoveConfig(text);
|
||||
const nextToc = { level, title: str };
|
||||
const nextToc = { level, title: removeAtag(str) };
|
||||
|
||||
if (/<!-- {docsify-ignore} -->/g.test(str)) {
|
||||
str = str.replace('<!-- {docsify-ignore} -->', '');
|
||||
nextToc.title = str;
|
||||
nextToc.title = removeAtag(str);
|
||||
nextToc.ignoreSubHeading = true;
|
||||
}
|
||||
|
||||
if (/{docsify-ignore}/g.test(str)) {
|
||||
str = str.replace('{docsify-ignore}', '');
|
||||
nextToc.title = str;
|
||||
nextToc.title = removeAtag(str);
|
||||
nextToc.ignoreSubHeading = true;
|
||||
}
|
||||
|
||||
if (/<!-- {docsify-ignore-all} -->/g.test(str)) {
|
||||
str = str.replace('<!-- {docsify-ignore-all} -->', '');
|
||||
nextToc.title = str;
|
||||
nextToc.title = removeAtag(str);
|
||||
nextToc.ignoreAllSubs = true;
|
||||
}
|
||||
|
||||
if (/{docsify-ignore-all}/g.test(str)) {
|
||||
str = str.replace('{docsify-ignore-all}', '');
|
||||
nextToc.title = str;
|
||||
nextToc.title = removeAtag(str);
|
||||
nextToc.ignoreAllSubs = true;
|
||||
}
|
||||
|
||||
|
@ -38,3 +38,13 @@ export function getAndRemoveConfig(str = '') {
|
||||
|
||||
return { str, config };
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the <a> tag from sidebar when the header with link, details see issue 1069
|
||||
* @param {string} str The string to deal with.
|
||||
*
|
||||
* @return {string} str The string after delete the <a> element.
|
||||
*/
|
||||
export function removeAtag(str = '') {
|
||||
return str.replace(/(<\/?a.*?>)/gi, '');
|
||||
}
|
||||
|
15
test/unit/render-util.test.js
Normal file
15
test/unit/render-util.test.js
Normal file
@ -0,0 +1,15 @@
|
||||
const { removeAtag } = require(`${SRC_PATH}/core/render/utils`);
|
||||
|
||||
// Suite
|
||||
// -----------------------------------------------------------------------------
|
||||
describe('core/render/utils', () => {
|
||||
// removeAtag()
|
||||
// ---------------------------------------------------------------------------
|
||||
describe('removeAtag()', () => {
|
||||
test('removeAtag from a link', () => {
|
||||
const result = removeAtag('<a href="www.example.com">content</a>');
|
||||
|
||||
expect(result).toEqual('content');
|
||||
});
|
||||
});
|
||||
});
|
Loading…
Reference in New Issue
Block a user