// retoor <retoor@molodetz.nl>
export class CodeMirrorModes {
static LANGUAGE_MODES = {
"c": "text/x-csrc",
"cpp": "text/x-c++src",
"java": "text/x-java",
"bash": "text/x-sh",
"ruby": "text/x-ruby",
"php": "text/x-php",
"perl": "text/x-perl",
"haskell": "text/x-haskell",
"lua": "text/x-lua",
"elixir": "text/x-elixir",
"dart": "text/x-dart",
"r": "text/x-rsrc",
"scala": "text/x-scala",
};
static EXTENSION_MODES = {
"py": "python",
"js": "javascript", "mjs": "javascript", "cjs": "javascript", "jsx": "javascript",
"ts": "text/typescript", "tsx": "text/typescript",
"json": "application/json", "jsonc": "application/json",
"c": "text/x-csrc", "h": "text/x-csrc",
"cpp": "text/x-c++src", "cc": "text/x-c++src", "hpp": "text/x-c++src", "hh": "text/x-c++src",
"cs": "text/x-csharp",
"java": "text/x-java",
"go": "go",
"rb": "text/x-ruby",
"php": "text/x-php",
"pl": "text/x-perl", "pm": "text/x-perl",
"lua": "text/x-lua",
"r": "text/x-rsrc",
"dart": "text/x-dart",
"swift": "swift",
"hs": "text/x-haskell",
"sql": "sql",
"sh": "text/x-sh", "bash": "text/x-sh", "zsh": "text/x-sh",
"yaml": "yaml", "yml": "yaml",
"md": "markdown", "markdown": "markdown",
"html": "htmlmixed", "htm": "htmlmixed",
"xml": "xml", "svg": "xml",
"css": "css", "scss": "css", "sass": "css", "less": "css",
};
static FILENAME_MODES = {
"dockerfile": "text/x-sh",
"makefile": "text/x-sh",
".gitignore": "text/plain",
".env": "text/plain",
};
static modeForFilename(name) {
const lower = (name || "").toLowerCase();
if (this.FILENAME_MODES[lower]) return this.FILENAME_MODES[lower];
const dot = lower.lastIndexOf(".");
const ext = dot >= 0 ? lower.slice(dot + 1) : "";
return this.EXTENSION_MODES[ext] || "plaintext";
}
}