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.
67 lines
1.4 KiB
67 lines
1.4 KiB
4 weeks ago
|
/*
|
||
|
Language: STEP Part 21
|
||
|
Contributors: Adam Joseph Cook <adam.joseph.cook@gmail.com>
|
||
|
Description: Syntax highlighter for STEP Part 21 files (ISO 10303-21).
|
||
|
Website: https://en.wikipedia.org/wiki/ISO_10303-21
|
||
|
*/
|
||
|
|
||
|
function step21(hljs) {
|
||
|
const STEP21_IDENT_RE = '[A-Z_][A-Z0-9_.]*';
|
||
|
const STEP21_KEYWORDS = {
|
||
|
$pattern: STEP21_IDENT_RE,
|
||
|
keyword: 'HEADER ENDSEC DATA'
|
||
|
};
|
||
|
const STEP21_START = {
|
||
|
className: 'meta',
|
||
|
begin: 'ISO-10303-21;',
|
||
|
relevance: 10
|
||
|
};
|
||
|
const STEP21_CLOSE = {
|
||
|
className: 'meta',
|
||
|
begin: 'END-ISO-10303-21;',
|
||
|
relevance: 10
|
||
|
};
|
||
|
|
||
|
return {
|
||
|
name: 'STEP Part 21',
|
||
|
aliases: [
|
||
|
'p21',
|
||
|
'step',
|
||
|
'stp'
|
||
|
],
|
||
|
case_insensitive: true, // STEP 21 is case insensitive in theory, in practice all non-comments are capitalized.
|
||
|
keywords: STEP21_KEYWORDS,
|
||
|
contains: [
|
||
|
STEP21_START,
|
||
|
STEP21_CLOSE,
|
||
|
hljs.C_LINE_COMMENT_MODE,
|
||
|
hljs.C_BLOCK_COMMENT_MODE,
|
||
|
hljs.COMMENT('/\\*\\*!', '\\*/'),
|
||
|
hljs.C_NUMBER_MODE,
|
||
|
hljs.inherit(hljs.APOS_STRING_MODE, {
|
||
|
illegal: null
|
||
|
}),
|
||
|
hljs.inherit(hljs.QUOTE_STRING_MODE, {
|
||
|
illegal: null
|
||
|
}),
|
||
|
{
|
||
|
className: 'string',
|
||
|
begin: "'",
|
||
|
end: "'"
|
||
|
},
|
||
|
{
|
||
|
className: 'symbol',
|
||
|
variants: [
|
||
|
{
|
||
|
begin: '#',
|
||
|
end: '\\d+',
|
||
|
illegal: '\\W'
|
||
|
}
|
||
|
]
|
||
|
}
|
||
|
]
|
||
|
};
|
||
|
}
|
||
|
|
||
|
module.exports = step21;
|