diff --git a/README.md b/README.md index 52c69799..2d6add5f 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,13 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
= {
+ target: '_blank',
+ rel: 'noopener noreferrer',
+};
+
function openUrlsInNewTab(md: MarkdownIt) {
// https://github.com/markdown-it/markdown-it/blob/12.2.0/docs/architecture.md#renderer
- const defaultRender = getDefaultRenderer(md, 'link_open');
+ const defaultRender = getOrDefaultRenderer(md, 'link_open');
md.renderer.rules.link_open = (tokens, idx, options, env, self) => {
const token = tokens[idx];
- if (!getTokenAttributeValue(token, 'target')) {
- token.attrPush(['target', '_blank']);
- }
+
+ Object.entries(ExternalAnchorElementAttributes).forEach(([name, value]) => {
+ const currentValue = getAttribute(token, name);
+ if (!currentValue) {
+ token.attrPush([name, value]);
+ } else if (currentValue !== value) {
+ setAttribute(token, name, value);
+ }
+ });
return defaultRender(tokens, idx, options, env, self);
};
}
-function getDefaultRenderer(md: MarkdownIt, ruleName: string): Renderer.RenderRule {
+function getOrDefaultRenderer(md: MarkdownIt, ruleName: string): Renderer.RenderRule {
const renderer = md.renderer.rules[ruleName];
- if (renderer) {
- return renderer;
- }
- return (tokens, idx, options, _env, self) => {
+ return renderer || defaultRenderer;
+ function defaultRenderer(tokens, idx, options, _env, self) {
return self.renderToken(tokens, idx, options);
- };
+ }
}
-function getTokenAttributeValue(token: Token, attributeName: string): string | undefined {
- const attributeIndex = token.attrIndex(attributeName);
+function getAttribute(token: Token, name: string): string | undefined {
+ const attributeIndex = token.attrIndex(name);
if (attributeIndex < 0) {
return undefined;
}
const value = token.attrs[attributeIndex][1];
return value;
}
+
+function setAttribute(token: Token, name: string, value: string): void {
+ const attributeIndex = token.attrIndex(name);
+ if (attributeIndex < 0) {
+ throw new Error('Attribute does not exist');
+ }
+ token.attrs[attributeIndex][1] = value;
+}
diff --git a/src/presentation/components/Scripts/View/TheScriptsView.vue b/src/presentation/components/Scripts/View/TheScriptsView.vue
index de0dfb94..9d77ec9a 100644
--- a/src/presentation/components/Scripts/View/TheScriptsView.vue
+++ b/src/presentation/components/Scripts/View/TheScriptsView.vue
@@ -20,7 +20,7 @@