Fork of daniellemaywood.uk/gleam — Wasm codegen work
2

Configure Feed

Select the types of activity you want to include in your feed.

gleam / compiler-core / templates / docs-js / highlightjs-gleam.js
2.5 kB 112 lines
1// SPDX-License-Identifier: Apache-2.0 2// SPDX-FileCopyrightText: 2021 The Gleam contributors 3 4hljs.registerLanguage("gleam", function (hljs) { 5 const KEYWORDS = { 6 className: "keyword", 7 beginKeywords: 8 "as assert auto case const delegate derive echo else fn if " + 9 "implement import let macro opaque panic pub test todo type use", 10 }; 11 const STRING = { 12 className: "string", 13 variants: [{ begin: /"/, end: /"/ }], 14 contains: [hljs.BACKSLASH_ESCAPE], 15 relevance: 0, 16 }; 17 const NAME = { 18 className: "variable", 19 begin: "\\b[a-z][a-z0-9_]*\\b", 20 relevance: 0, 21 }; 22 const DISCARD_NAME = { 23 className: "comment", 24 begin: "\\b_[a-z][a-z0-9_]*\\b", 25 relevance: 0, 26 }; 27 const NUMBER = { 28 className: "number", 29 variants: [ 30 { 31 // binary 32 begin: "\\b0[bB](?:_?[01]+)+", 33 }, 34 { 35 // octal 36 begin: "\\b0[oO](?:_?[0-7]+)+", 37 }, 38 { 39 // hex 40 begin: "\\b0[xX](?:_?[0-9a-fA-F]+)+", 41 }, 42 { 43 // dec, float 44 begin: "\\b\\d(?:_?\\d+)*(?:\\.(?:\\d(?:_?\\d+)*)*)?", 45 }, 46 ], 47 relevance: 0, 48 }; 49 50 return { 51 name: "Gleam", 52 aliases: ["gleam"], 53 contains: [ 54 hljs.C_LINE_COMMENT_MODE, 55 STRING, 56 { 57 // bit array 58 begin: "<<", 59 end: ">>", 60 contains: [ 61 { 62 className: "keyword", 63 beginKeywords: 64 "binary bits bytes int float bit_string bit_array bits utf8 utf16 " + 65 "utf32 utf8_codepoint utf16_codepoint utf32_codepoint signed " + 66 "unsigned big little native unit size", 67 }, 68 KEYWORDS, 69 STRING, 70 NAME, 71 DISCARD_NAME, 72 NUMBER, 73 ], 74 relevance: 10, 75 }, 76 { 77 className: "function", 78 beginKeywords: "fn", 79 end: "\\(", 80 excludeEnd: true, 81 contains: [ 82 { 83 className: "title", 84 begin: "[a-z][a-z0-9_]*\\w*", 85 relevance: 0, 86 }, 87 ], 88 }, 89 { 90 className: "attribute", 91 begin: "@", 92 end: "\\(", 93 excludeEnd: true, 94 }, 95 KEYWORDS, 96 { 97 // Type names and constructors 98 className: "title", 99 begin: "\\b[A-Z][A-Za-z0-9]*\\b", 100 relevance: 0, 101 }, 102 { 103 className: "operator", 104 begin: "[+\\-*/%!=<>&|.]+", 105 relevance: 0, 106 }, 107 NAME, 108 DISCARD_NAME, 109 NUMBER, 110 ], 111 }; 112});