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