Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

89 lines
2.1 KiB

/*
Language: Pony
Author: Joe Eli McIlvain <joe.eli.mac@gmail.com>
Description: Pony is an open-source, object-oriented, actor-model,
capabilities-secure, high performance programming language.
Website: https://www.ponylang.io
*/
function pony(hljs) {
const KEYWORDS = {
keyword:
'actor addressof and as be break class compile_error compile_intrinsic ' +
'consume continue delegate digestof do else elseif embed end error ' +
'for fun if ifdef in interface is isnt lambda let match new not object ' +
'or primitive recover repeat return struct then trait try type until ' +
'use var where while with xor',
meta:
'iso val tag trn box ref',
literal:
'this false true'
};
const TRIPLE_QUOTE_STRING_MODE = {
className: 'string',
begin: '"""',
end: '"""',
relevance: 10
};
const QUOTE_STRING_MODE = {
className: 'string',
begin: '"',
end: '"',
contains: [ hljs.BACKSLASH_ESCAPE ]
};
const SINGLE_QUOTE_CHAR_MODE = {
className: 'string',
begin: '\'',
end: '\'',
contains: [ hljs.BACKSLASH_ESCAPE ],
relevance: 0
};
const TYPE_NAME = {
className: 'type',
begin: '\\b_?[A-Z][\\w]*',
relevance: 0
};
const PRIMED_NAME = {
begin: hljs.IDENT_RE + '\'',
relevance: 0
};
const NUMBER_MODE = {
className: 'number',
begin: '(-?)(\\b0[xX][a-fA-F0-9]+|\\b0[bB][01]+|(\\b\\d+(_\\d+)?(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)',
relevance: 0
};
/**
* The `FUNCTION` and `CLASS` modes were intentionally removed to simplify
* highlighting and fix cases like
* ```
* interface Iterator[A: A]
* fun has_next(): Bool
* fun next(): A?
* ```
* where it is valid to have a function head without a body
*/
return {
name: 'Pony',
keywords: KEYWORDS,
contains: [
TYPE_NAME,
TRIPLE_QUOTE_STRING_MODE,
QUOTE_STRING_MODE,
SINGLE_QUOTE_CHAR_MODE,
PRIMED_NAME,
NUMBER_MODE,
hljs.C_LINE_COMMENT_MODE,
hljs.C_BLOCK_COMMENT_MODE
]
};
}
module.exports = pony;