mirror of
https://github.com/anoma/juvix.git
synced 2024-11-24 16:53:49 +03:00
453996530d
This PR adds initial syntax highlighting for juvix code blocks and REPL sessions in Markdown files rendered by mdbook. After this PR, only two themes would be supported to ease maintenance: Light and Dark (Ayu). The implementation is a specifically tailored version of - https://github.com/anoma/highlightjs-juvix (plugin for HighlightJS,v11.7). to be compatible with the infamous HighlightJS 10.1.1, to be used just for MdBook. The output can be seen here (make sure the CI finished to check the last version, otherwise run the website locally): - https://jonaprieto.github.io/juvix/tutorials/learn.html
84 lines
2.6 KiB
JavaScript
84 lines
2.6 KiB
JavaScript
// To be used with highlight.js v10.1.1
|
|
function hljsDefinePascal(e) {
|
|
var a =
|
|
"exports register file shl array record property for mod while set ally label uses raise not stored class safecall var interface or private static exit index inherited to else stdcall override shr asm far resourcestring finalization packed virtual out and protected library do xorwrite goto near function end div overload object unit begin string on inline repeat until destructor write message program with read initialization except default nil if case cdecl in downto threadvar of try pascal const external constructor type public then implementation finally published procedure absolute reintroduce operator as is abstract alias assembler bitpacked break continue cppdecl cvar enumerator experimental platform deprecated unimplemented dynamic export far16 forward generic helper implements interrupt iochecks local name nodefault noreturn nostackframe oldfpccall otherwise saveregisters softfloat specialize strict unaligned varargs ",
|
|
r = [
|
|
e.C_LINE_COMMENT_MODE,
|
|
e.COMMENT(/\{/, /\}/, { relevance: 0 }),
|
|
e.COMMENT(/\(\*/, /\*\)/, { relevance: 10 }),
|
|
],
|
|
n = {
|
|
className: "meta",
|
|
variants: [
|
|
{ begin: /\{\$/, end: /\}/ },
|
|
{ begin: /\(\*\$/, end: /\*\)/ },
|
|
],
|
|
},
|
|
t = {
|
|
className: "string",
|
|
begin: /'/,
|
|
end: /'/,
|
|
contains: [{ begin: /''/ }],
|
|
},
|
|
s = { className: "string", begin: /(#\d+)+/ },
|
|
i = {
|
|
begin: e.IDENT_RE + "\\s*=\\s*class\\s*\\(",
|
|
returnBegin: !0,
|
|
contains: [e.TITLE_MODE],
|
|
},
|
|
c = {
|
|
className: "function",
|
|
beginKeywords: "function constructor destructor procedure",
|
|
end: /[:;]/,
|
|
keywords: "function constructor|10 destructor|10 procedure|10",
|
|
contains: [
|
|
e.TITLE_MODE,
|
|
{
|
|
className: "params",
|
|
begin: /\(/,
|
|
end: /\)/,
|
|
keywords: a,
|
|
contains: [t, s, n].concat(r),
|
|
},
|
|
n,
|
|
].concat(r),
|
|
};
|
|
return {
|
|
name: "Delphi",
|
|
aliases: [
|
|
"dpr",
|
|
"dfm",
|
|
"pas",
|
|
"pascal",
|
|
"freepascal",
|
|
"lazarus",
|
|
"lpr",
|
|
"lfm",
|
|
],
|
|
case_insensitive: !0,
|
|
keywords: a,
|
|
illegal: /"|\$[G-Zg-z]|\/\*|<\/|\|/,
|
|
contains: [
|
|
t,
|
|
s,
|
|
e.NUMBER_MODE,
|
|
{
|
|
className: "number",
|
|
relevance: 0,
|
|
variants: [
|
|
{ begin: "\\$[0-9A-Fa-f]+" },
|
|
{ begin: "&[0-7]+" },
|
|
{ begin: "%[01]+" },
|
|
],
|
|
},
|
|
i,
|
|
c,
|
|
n,
|
|
].concat(r),
|
|
};
|
|
}
|
|
|
|
module.exports = function (hljs) {
|
|
hljs.registerLanguage("pascal", hljsDefinePascal);
|
|
};
|