prism-code-editor
Version:
Lightweight, extensible code editor component for the web using Prism
104 lines (103 loc) • 3.49 kB
JavaScript
import { a as languages } from "../../core-8vQkh0Rd.js";
import { i as clikePunctuation, n as clikeComment, o as dotPunctuation, t as boolean } from "../../patterns-C0vJBvXO.js";
//#region src/prism/languages/java.js
var keywords = /\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|opens?|package|permits|private|protected|provides|public|record(?!\s*[()[\]{}%~.,:;?%&|^=<>/*+-])|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throws?|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/;
var classNamePrefix = "(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*";
var namespace = {
pattern: /^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,
inside: dotPunctuation
};
var classInside = {
"namespace": namespace,
"punctuation": /\./
};
var className = {
pattern: RegExp(`(^|[^\\w.])${classNamePrefix}[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b`),
lookbehind: true,
inside: classInside
};
languages.java = {
"doc-comment": {
pattern: /\/\*\*(?!\/)[^]*?(?:\*\/|$)/g,
alias: "comment",
inside: "javadoc"
},
"comment": clikeComment,
"triple-quoted-string": {
pattern: /"""[ ]*\n(?:\\.|[^\\])*?"""/g,
alias: "string"
},
"char": /'(?:\\.|[^\\\n']){1,6}'/g,
"string": {
pattern: /(^|[^\\])"(?:\\.|[^\\\n"])*"/g,
lookbehind: true
},
"annotation": {
pattern: /(^|[^.])@\w+(?:\s*\.\s*\w+)*/,
lookbehind: true,
alias: "punctuation"
},
"generics": {
pattern: /<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,
inside: {
"class-name": className,
"keyword": keywords,
"punctuation": /[().,:<>]/,
"operator": /[?&|]/
}
},
"import": [{
pattern: RegExp(`(\\bimport\\s+)${classNamePrefix}(?:[A-Z]\\w*|\\*)(?=\\s*;)`),
lookbehind: true,
inside: {
"namespace": namespace,
"punctuation": /\./,
"operator": /\*/,
"class-name": /\w+/
}
}, {
pattern: RegExp(`(\\bimport\\s+static\\s+)${classNamePrefix}(?:\\w+|\\*)(?=\\s*;)`),
lookbehind: true,
alias: "static",
inside: {
"namespace": namespace,
"static": /\b\w+$/,
"punctuation": /\./,
"operator": /\*/,
"class-name": /\w+/
}
}],
"namespace": {
pattern: RegExp(`(\\b(?:exports|import(?:\\s+static)?|module|opens?|package|provides|requires|to|transitive|uses|with)\\s+)(?!${keywords.source})[a-z]\\w*(?:\\.[a-z]\\w*)*\\.?`),
lookbehind: true,
inside: dotPunctuation
},
"class-name": [
className,
{
pattern: RegExp(`(^|[^\\w.])${classNamePrefix}[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()]|\\s*(?:\\[[\\s,]*\\]\\s*)?::\\s*new\\b)`),
lookbehind: true,
inside: classInside
},
{
pattern: RegExp(`(\\b(?:class|enum|extends|implements|instanceof|interface|new|record|throws)\\s+)${classNamePrefix}[A-Z]\\w*\\b`),
lookbehind: true,
inside: classInside
}
],
"keyword": keywords,
"boolean": boolean,
"function": {
pattern: /\b\w+(?=\()|(::\s*)[a-z_]\w*/,
lookbehind: true
},
"number": /\b0b[01][01_]*l?\b|\b0x(?:\.[a-f\d_p+-]+|[a-f\d_]+(?:\.[a-f\d_p+-]+)?)\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,
"constant": /\b[A-Z][A-Z_\d]+\b/,
"operator": {
pattern: /(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[%&|^!=<>/*+-]=?)/m,
lookbehind: true
},
"punctuation": clikePunctuation
};
//#endregion
//# sourceMappingURL=java.js.map