highlight.js (syntax highlighting for the Web) support for Cedar based on Grammar specification for Cedar policy syntax and for Cedar schema based on Grammar specification for Cedar schemas. Project structure derived from language contributor checklist and mapped to the Stylable Scopes.
See it in action on https://docs.cedarpolicy.com/
Web browser <script src=> usage example from test/static/index.html (adjust the script src paths as required):
<script src="highlight.min.js"></script>
<script src="hljs-cedar.min.js"></script>
<script type="text/javascript">
window.onload = () => {
hljs.registerLanguage('cedar', hljsCedar);
hljs.registerLanguage('cedarschema', hljsCedarschema);
hljs.highlightAll();
};
</script>ECMAScript module import usage example from test/vite/index.html (adjust the import from paths as required):
import hljs from 'highlight.js';
import { hljsCedar, hljsCedarschema } from 'hljs-cedar.mjs';
hljs.registerLanguage('cedar', hljsCedar);
hljs.registerLanguage('cedarschema', hljsCedarschema);
hljs.highlightAll();Install the project dependencies using npm install.
src/cedar.js is the main source file in ECMAScript module format.
The npm run build script uses esbuildto create multiple files in the dist folder:
hljs-cedar.js- Web browser<script src=>compatible version. Setswindow.hljsCedarandwindow.hljsCedarschemato highlight functions.hljs-cedar.min.js- Minified web browser<script src=>compatible version.hljs-cedar.mjs- ECMAScript module version with default export. Used bytest/cedar-esm.test.jstest cases andtest\vite\main.jsfrom Vite web app.import hljsCedar from '../dist/hljs-cedar.mjs';
hljs-cedar.cjs- CommonJS module version with default export. Used bytest/cedar-commonjs.test.jstest cases.const hljsCedar = require('../dist/hljs-cedar.cjs').default;
npm run test uses vitest to syntax highlight test/data/*.cedar and test/data/*.cedarschema files and compares against a generated .html
File Snapshots for each Cedar and Cedar schema file.
View either the static test/static/index.html on your browser or npm run dev and test/vite/index.html renders in your browser: http://localhost:5173/
When new test/data/*.cedar or test/data/*.cedarschema files are created, npm run testdata will update the contents of each index.html file.
Pull requests require a Developer Certificate of Origin (DCO) to certify the right to submit the code they are contributing to the project. Either add the -s or the --signoff flag to your commits or update your .vscode/settings.json with git.alwaysSignOff.
{
"git.alwaysSignOff": true
}See CONTRIBUTING for more information.
This project is licensed under the Apache-2.0 License.