Files
zitadel/site/src/utils/markdown.js
T
Max PeintnerandGitHub 2c517d6278 feat(documentation): svelte app as document generator (#566)
* check in full site application

* rm unused assets components

* change base css

* i18n

* new doc workflow

* fix crosslink to doc in github

* nav, console link, assets, console brand

* edit configjs server

* rm go struct references

* cleanup input output bindings

* working dir

* export path

* always trigger

* rel paths

* cname

* rev workdir

* fix fallbacklanguage, home on large screens

* remove mit from site
2020-08-11 09:53:09 +02:00

62 lines
1.7 KiB
JavaScript

import * as fleece from 'golden-fleece';
export function extract_frontmatter(markdown) {
const match = /---\r?\n([\s\S]+?)\r?\n---/.exec(markdown);
const frontMatter = match[1];
const content = markdown.slice(match[0].length);
const metadata = {};
frontMatter.split('\n').forEach((pair) => {
const colonIndex = pair.indexOf(':');
metadata[pair.slice(0, colonIndex).trim()] = pair.slice(colonIndex + 1).trim();
});
return { metadata, content };
}
export function extract_metadata(line, lang) {
try {
if (lang === 'html' && line.startsWith('<!--') && line.endsWith('-->')) {
console.log(line);
return fleece.evaluate(line.slice(4, -3).trim());
}
if (lang === 'codeblock' && line.startsWith('<!--') && line.endsWith('-->')) {
console.log(line);
return fleece.evaluate(line.slice(4, -3).trim());
}
if (lang === 'js' || (lang === 'json' && line.startsWith('/*') && line.endsWith('*/'))) {
return fleece.evaluate(line.slice(2, -2).trim());
}
} catch (err) {
// TODO report these errors, don't just squelch them
return null;
}
}
// map lang to language-attributes
export const langs = {
bash: 'bash',
html: 'markup',
sv: 'markup',
js: 'javascript',
css: 'css'
};
// links renderer
export function link_renderer(href, title, text) {
let target_attr = '';
let title_attr = '';
if (href.startsWith('http')) {
target_attr = ' target="_blank"';
}
if (title !== null) {
title_attr = ` title="${title}"`;
}
return `<a href="${href}"${target_attr}${title_attr}>${text}</a>`;
}