-
-
Notifications
You must be signed in to change notification settings - Fork 42
/
Copy pathlua.js
33 lines (32 loc) · 1013 Bytes
/
lua.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// @ts-nocheck
/**
* @import {Refractor} from '../lib/core.js'
*/
lua.displayName = 'lua'
lua.aliases = []
/** @param {Refractor} Prism */
export default function lua(Prism) {
Prism.languages.lua = {
comment: /^#!.+|--(?:\[(=*)\[[\s\S]*?\]\1\]|.*)/m,
// \z may be used to skip the following space
string: {
pattern:
/(["'])(?:(?!\1)[^\\\r\n]|\\z(?:\r\n|\s)|\\(?:\r\n|[^z]))*\1|\[(=*)\[[\s\S]*?\]\2\]/,
greedy: true
},
number:
/\b0x[a-f\d]+(?:\.[a-f\d]*)?(?:p[+-]?\d+)?\b|\b\d+(?:\.\B|(?:\.\d*)?(?:e[+-]?\d+)?\b)|\B\.\d+(?:e[+-]?\d+)?\b/i,
keyword:
/\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,
function: /(?!\d)\w+(?=\s*(?:[({]))/,
operator: [
/[-+*%^&|#]|\/\/?|<[<=]?|>[>=]?|[=~]=?/,
{
// Match ".." but don't break "..."
pattern: /(^|[^.])\.\.(?!\.)/,
lookbehind: true
}
],
punctuation: /[\[\](){},;]|\.+|:+/
}
}