deleting old custom plugins

This commit is contained in:
matthieu42morin 2024-02-12 19:58:29 +01:00
parent 4661d14912
commit 757fc55f66
6 changed files with 0 additions and 303 deletions

View File

@ -1,51 +0,0 @@
import { toString } from 'mdast-util-to-string';
import { visit } from 'unist-util-visit';
export default () => (tree, vFile) => {
let headers = [];
visit(tree, (node) => {
if (node.type === 'heading') {
if (node.depth !== 1) {
const sanitizedString = toString(node).replace(
/{(.*?)}/,
(_, token) => {
return vFile.data.fm[token] || token;
},
);
headers.push({
title: sanitizedString,
level: node.depth,
slug: node.data.id,
children: [],
});
}
}
});
const stack = [];
const sortedHeaders = [];
//const sort Header to tree
const sortHeader = (header) => {
while (stack.length !== 0 && header.level <= stack[0].level) {
stack.shift();
}
if (stack.length === 0) {
sortedHeaders.push(header);
stack.push(header);
} else {
(stack[0].children ??= []).push(header);
stack.unshift(header);
}
};
headers.forEach((_, index) => {
const header = headers[index];
sortHeader(header);
});
if (!vFile.data.fm) vFile.data.fm = {};
vFile.data.fm.headings = sortedHeaders;
return tree;
};

View File

@ -1,45 +0,0 @@
import Prism from 'prismjs';
import 'prismjs/components/prism-docker.min.js';
import 'prismjs/components/prism-bash.min.js';
import 'prismjs/components/prism-yaml.min.js';
import 'prismjs/components/prism-javascript.min.js';
import 'prismjs/components/prism-json.min.js';
import 'prismjs/components/prism-markdown.min.js';
import 'prismjs/components/prism-sql.min.js';
import 'prismjs/components/prism-toml.min.js';
import 'prismjs/components/prism-promql.min.js';
import 'prismjs/components/prism-go.min.js';
import 'prismjs/components/prism-typescript.min.js';
import 'prismjs/components/prism-python.min.js';
import { escapeSvelte } from 'mdsvex';
const langMap = {
sh: 'bash',
Dockerfile: 'dockerfile',
YAML: 'yaml',
};
/**
*
* @param {string} code the code that gets parsed
* @param {string} lang the language the code is written in
* @param {string} meta meta information for the code fence
* @returns {string}
*/
export function highlightCode(code, lang, meta) {
let title = null;
const _lang = langMap[lang] || lang || '';
if (meta) {
title = meta.match(/title="?(.*?)"/)?.[1];
}
const highlighted = _lang
? escapeSvelte(Prism.highlight(code, Prism.languages[_lang], _lang))
: code;
return `<CodeFence code={${JSON.stringify(highlighted)}}
rawCode={${JSON.stringify(code)}}
lang={"${_lang}"}
${title ? `title={"${title}"}` : ''}
/>`;
}

View File

@ -1,73 +0,0 @@
/**
* Credit goes to @Xananax for providing this solution within the gist https://gist.github.com/Xananax/5dca3a1dd7070e4fdebe2927e4aeb55b
*/
import { join, basename, extname } from 'path';
export const defaults = {
extensions: ['.svelte.md', '.md', '.svx'],
dir: `$lib`,
list: [],
};
/**
* Injects global imports in all your mdsvex files
* Specify:
* - the root dir (defaults to `src/lib`)
* - the array list of components (with extension), like `['Component.svelte']`
* - the valid extensions list as an array (defaults to `['.svelte.md', '.md', '.svx']`)
*
* If you want the component name to be different from the file name, you can specify an array
* of arrays: `['Component.svelte', ['Another', 'AnotherComp.svelte'], 'ThirdComp.svelte']`
*
* @param {Object} options options described above
* @returns a preprocessor suitable to plug into the `preprocess` key of the svelte config
*/
export const mdsvexGlobalComponents = (options = {}) => {
const { extensions, dir, list } = { ...defaults, ...options };
const extensionsRegex = new RegExp(
'(' + extensions.join('|').replace(/\./g, '\\.') + ')$',
'i',
);
if (!list || !list.length || !Array.isArray(list)) {
throw new Error(
`"list" option must be an array and contain at least one element`,
);
}
const imports = list
.map((entry) => {
let name = '';
if (Array.isArray(entry)) {
name = entry[0];
entry = entry[1];
}
const ext = extname(entry);
const path = join(dir, entry);
name = name || basename(entry, ext);
return `\nimport ${name} from "${path}"`;
})
.join('\n');
const preprocessor = {
script(thing) {
const { content, filename, attributes, markup } = thing;
if (!filename.match(extensionsRegex)) {
return { code: content };
}
const hasModuleContext = /^<script context="module">/.test(markup);
const isModulePass = attributes?.context === 'module';
if (!isModulePass || !hasModuleContext) {
return { code: content };
}
const isValidPass =
(hasModuleContext && isModulePass) || !hasModuleContext;
if (!isValidPass) {
return { code: content };
}
return { code: `${imports}\n${content}` };
},
};
return preprocessor;
};

View File

@ -1,70 +0,0 @@
/**
* Credit goes to @Xananax for providing this solution within the gist https://gist.github.com/Xananax/5dca3a1dd7070e4fdebe2927e4aeb55b
*/
import { join, basename, extname } from 'path';
export const defaults = {
extensions: ['.svelte.md', '.md', '.svx'],
dir: `$lib`,
list: []
};
/**
* Injects global imports in all your mdsvex files
* Specify:
* - the root dir (defaults to `src/lib`)
* - the array list of components (with extension), like `['Component.svelte']`
* - the valid extensions list as an array (defaults to `['.svelte.md', '.md', '.svx']`)
*
* If you want the component name to be different from the file name, you can specify an array
* of arrays: `['Component.svelte', ['Another', 'AnotherComp.svelte'], 'ThirdComp.svelte']`
*
* @param {Object} options options described above
* @returns a preprocessor suitable to plug into the `preprocess` key of the svelte config
*/
export const mdsvexGlobalComponents = (options = {}) => {
const { extensions, dir, list } = { ...defaults, ...options };
const extensionsRegex = new RegExp(
'(' + extensions.join('|').replace(/\./g, '\\.') + ')$',
'i'
);
if (!list || !list.length || !Array.isArray(list)) {
throw new Error(`"list" option must be an array and contain at least one element`);
}
const imports = list
.map((entry) => {
let name = '';
if (Array.isArray(entry)) {
name = entry[0];
entry = entry[1];
}
const ext = extname(entry);
const path = join(dir, entry);
name = name || basename(entry, ext);
return `\nimport ${name} from "${path}";`;
})
.join('\n');
const preprocessor = {
script(thing) {
const { content, filename, attributes, markup } = thing;
if (!filename.match(extensionsRegex)) {
return { code: content };
}
const hasModuleContext = /^<script context="module">/.test(markup);
const isModulePass = attributes?.context === 'module';
if (!isModulePass || !hasModuleContext) {
return { code: content };
}
const isValidPass = (hasModuleContext && isModulePass) || !hasModuleContext;
if (!isValidPass) {
return { code: content };
}
return { code: `${imports}\n${content}` };
}
};
return preprocessor;
};

View File

@ -1,30 +0,0 @@
import { visit } from 'unist-util-visit';
const youtubeEmbedRegex = new RegExp(`\(youtube\):\(\.\*\)`, 'i');
const embedVideoHtml = (videoId, options) => `
<span class="relative mt-medium not-prose block overflow-hidden max-w-full after:block after:pt-[56.26%]"><iframe
title="${options.title ? options.title : 'Youtube Video'}"
width="${options.width}"
height="${options.height}"
src="https://www.youtube-nocookie.com/embed/${videoId}?rel=0"
class="absolute top-0 left-0 w-full h-full"
${options.noIframeBorder ? 'style="border:0"' : ''}
allowfullscreen
sandbox="allow-same-origin allow-scripts allow-popups">
</iframe></span>`;
const visitor = (options) => (node) => {
if (node.type === 'inlineCode') {
const regexResult = node.value.match(youtubeEmbedRegex);
if (regexResult) {
node.type = 'html';
node.value = embedVideoHtml(regexResult[2].trim(), options);
}
}
};
export default (options) => (tree) => {
visit(tree, visitor(options));
return tree;
};

View File

@ -1,34 +0,0 @@
import { visit } from 'unist-util-visit';
import regexCreator from 'emoji-regex';
const emojiRegex = regexCreator();
const nonAlphanumericsAtTheBeginningRegex = /^\W+/g;
const nonAlphanumericsAtTheEndRegex = /\W+$/g;
const beautifyFragment = (str = '') =>
str
.replace(emojiRegex, '')
.replace(nonAlphanumericsAtTheBeginningRegex, '')
.replace(nonAlphanumericsAtTheEndRegex, '');
const visitor = (node) => {
node.data = node.data || {};
node.data.hProperties = node.data.hProperties || {};
if (node.type === 'heading') {
let fragment = node.data.id;
fragment = beautifyFragment(fragment);
const lastChildrenIdx = node.children.length - 1;
const headingPermalink = node.children[lastChildrenIdx];
headingPermalink.url = `#${fragment}`;
node.data.hProperties.id = fragment;
node.data.id = fragment;
}
};
export default () => async (tree) => {
visit(tree, visitor);
return tree;
};