Merge pull request #560 from aluzzardi/docs-syntax-highlight

docs syntax highlight for CUE
This commit is contained in:
Andrea Luzzardi 2021-06-03 18:17:50 -07:00 committed by GitHub
commit fd31afeda0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 84 additions and 29 deletions

View File

@ -1,62 +1,61 @@
const path = require('path');
const path = require("path");
/** @type {import('@docusaurus/types').DocusaurusConfig} */
module.exports = {
title: 'Dagger',
tagline: 'Dagger is a programmable deployment system',
url: 'https://docs.dagger.io',
baseUrl: '/',
onBrokenLinks: 'throw',
onBrokenMarkdownLinks: 'warn',
favicon: 'img/favicon.png',
organizationName: 'Dagger',
projectName: 'Dagger',
title: "Dagger",
tagline: "Dagger is a programmable deployment system",
url: "https://docs.dagger.io",
baseUrl: "/",
onBrokenLinks: "throw",
onBrokenMarkdownLinks: "warn",
favicon: "img/favicon.png",
organizationName: "Dagger",
projectName: "Dagger",
stylesheets: [
'https://fonts.gstatic.com',
'https://fonts.googleapis.com/css2?family=Poppins:wght@700&display=swap',
'https://fonts.googleapis.com/css2?family=Karla&family=Poppins:wght@700&display=swap'
"https://fonts.gstatic.com",
"https://fonts.googleapis.com/css2?family=Poppins:wght@700&display=swap",
"https://fonts.googleapis.com/css2?family=Karla&family=Poppins:wght@700&display=swap",
],
themeConfig: {
sidebarCollapsible: false,
prism: {
defaultLanguage: 'go',
theme: require("prism-react-renderer/themes/vsDark"),
},
navbar: {
logo: {
alt: 'Dagger Logo',
src: 'img/dagger-logo.png',
srcDark: 'img/dagger_logo_dark.png',
alt: "Dagger Logo",
src: "img/dagger-logo.png",
srcDark: "img/dagger_logo_dark.png",
},
},
algolia: {
apiKey: '66c9f1f7e6ba6617ec4e65194788bacd',
indexName: 'docs_dagger'
apiKey: "66c9f1f7e6ba6617ec4e65194788bacd",
indexName: "docs_dagger",
},
colorMode: {
// "light" | "dark"
defaultMode: 'light',
defaultMode: "light",
switchConfig: {
darkIcon: "img/Icon_Night-mode.svg",
lightIcon: 'img/Icon_Day-mode.svg',
lightIcon: "img/Icon_Day-mode.svg",
},
},
},
presets: [
[
'@docusaurus/preset-classic',
"@docusaurus/preset-classic",
{
docs: {
sidebarPath: require.resolve('./sidebars.js'),
editUrl:
'https://github.com/dagger/dagger/blob/main',
routeBasePath: '/',
sidebarPath: require.resolve("./sidebars.js"),
editUrl: "https://github.com/dagger/dagger/blob/main",
routeBasePath: "/",
},
theme: {
customCss: require.resolve('./src/css/custom.css'),
customCss: require.resolve("./src/css/custom.css"),
},
},
],
],
plugins: [path.resolve(__dirname, './custom_plugins')],
};
plugins: [path.resolve(__dirname, "./custom_plugins")],
};

View File

@ -0,0 +1,24 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import ExecutionEnvironment from "@docusaurus/ExecutionEnvironment";
import siteConfig from "@generated/docusaurus.config";
const prismIncludeLanguages = (PrismObject) => {
if (ExecutionEnvironment.canUseDOM) {
const {
themeConfig: { prism: { additionalLanguages = [] } = {} },
} = siteConfig;
window.Prism = PrismObject;
additionalLanguages.forEach((lang) => {
require(`prismjs/components/prism-${lang}`); // eslint-disable-line
});
require("./prism.cue.js");
delete window.Prism;
}
};
export default prismIncludeLanguages;

View File

@ -0,0 +1,32 @@
Prism.languages.cue = Prism.languages.extend("clike", {
// https://github.com/PrismJS/prism/blob/master/components/prism-swift.js
string: {
pattern: /(["'`])(?:\\[\s\S]|(?!\1)[^\\])*\1/,
greedy: true,
inside: {
interpolation: {
pattern: /\\\#*\((?:[^()]|\([^)]+\))+\)/,
inside: {
delimiter: {
pattern: /^\\\#*\(|\)$/,
alias: "variable",
},
},
},
},
},
// https://cuelang.org/docs/references/spec/#values
keyword: /\b(?:package|import|if|else|for|in|let)\b/,
boolean: /\b(?:true|false)\b/,
constant: /\b(?:_\|_|_)\b/,
// https://github.com/PrismJS/prism/blob/master/components/prism-go.js
number: /(?:\b0x[a-f\d]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[-+]?\d+)?)i?/i,
operator:
/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,
// https://cuelang.org/docs/references/spec/#predeclared-identifiers
builtin:
/\b(?:len|null|bool|int|float|string|bytes|number|u?int(?:8|16|32|64|128)?|rune|float(?:32|64))\b/,
});