step21.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /*
  2. Language: STEP Part 21
  3. Contributors: Adam Joseph Cook <adam.joseph.cook@gmail.com>
  4. Description: Syntax highlighter for STEP Part 21 files (ISO 10303-21).
  5. Website: https://en.wikipedia.org/wiki/ISO_10303-21
  6. */
  7. function step21(hljs) {
  8. var STEP21_IDENT_RE = '[A-Z_][A-Z0-9_.]*';
  9. var STEP21_KEYWORDS = {
  10. $pattern: STEP21_IDENT_RE,
  11. keyword: 'HEADER ENDSEC DATA'
  12. };
  13. var STEP21_START = {
  14. className: 'meta',
  15. begin: 'ISO-10303-21;',
  16. relevance: 10
  17. };
  18. var STEP21_CLOSE = {
  19. className: 'meta',
  20. begin: 'END-ISO-10303-21;',
  21. relevance: 10
  22. };
  23. return {
  24. name: 'STEP Part 21',
  25. aliases: ['p21', 'step', 'stp'],
  26. case_insensitive: true, // STEP 21 is case insensitive in theory, in practice all non-comments are capitalized.
  27. keywords: STEP21_KEYWORDS,
  28. contains: [
  29. STEP21_START,
  30. STEP21_CLOSE,
  31. hljs.C_LINE_COMMENT_MODE,
  32. hljs.C_BLOCK_COMMENT_MODE,
  33. hljs.COMMENT('/\\*\\*!', '\\*/'),
  34. hljs.C_NUMBER_MODE,
  35. hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),
  36. hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),
  37. {
  38. className: 'string',
  39. begin: "'", end: "'"
  40. },
  41. {
  42. className: 'symbol',
  43. variants: [
  44. {
  45. begin: '#', end: '\\d+',
  46. illegal: '\\W'
  47. }
  48. ]
  49. }
  50. ]
  51. };
  52. }
  53. module.exports = step21;