| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | /*Language: STEP Part 21Contributors: 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;
 |