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.
66 lines
1.4 KiB
66 lines
1.4 KiB
/* |
|
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;
|
|
|