1
0
silverbullet/common/languages.ts
2023-10-04 17:14:24 +02:00

95 lines
3.3 KiB
TypeScript

import { LRLanguage } from "@codemirror/language";
import {
cLanguage,
cppLanguage,
csharpLanguage,
dartLanguage,
htmlLanguage,
javaLanguage,
javascriptLanguage,
jsonLanguage,
kotlinLanguage,
Language,
objectiveCLanguage,
objectiveCppLanguage,
postgresqlLanguage,
protobufLanguage,
pythonLanguage,
rustLanguage,
scalaLanguage,
shellLanguage,
sqlLanguage,
StreamLanguage,
tomlLanguage,
typescriptLanguage,
xmlLanguage,
yamlLanguage,
} from "./deps.ts";
import { highlightingDirectiveParser } from "./markdown_parser/parser.ts";
export const builtinLanguages: Record<string, Language> = {
"meta": StreamLanguage.define(yamlLanguage),
"yaml": StreamLanguage.define(yamlLanguage),
"template": StreamLanguage.define(yamlLanguage),
"embed": StreamLanguage.define(yamlLanguage),
"data": StreamLanguage.define(yamlLanguage),
"javascript": javascriptLanguage,
"js": javascriptLanguage,
"typescript": typescriptLanguage,
"ts": typescriptLanguage,
"sql": StreamLanguage.define(sqlLanguage),
"postgresql": StreamLanguage.define(postgresqlLanguage),
"pgsql": StreamLanguage.define(postgresqlLanguage),
"postgres": StreamLanguage.define(postgresqlLanguage),
"rust": StreamLanguage.define(rustLanguage),
"rs": StreamLanguage.define(rustLanguage),
"css": StreamLanguage.define(sqlLanguage),
"html": htmlLanguage,
"python": StreamLanguage.define(pythonLanguage),
"py": StreamLanguage.define(pythonLanguage),
"protobuf": StreamLanguage.define(protobufLanguage),
"proto": StreamLanguage.define(protobufLanguage),
"shell": StreamLanguage.define(shellLanguage),
"sh": StreamLanguage.define(shellLanguage),
"bash": StreamLanguage.define(shellLanguage),
"zsh": StreamLanguage.define(shellLanguage),
"fish": StreamLanguage.define(shellLanguage),
"swift": StreamLanguage.define(rustLanguage),
"toml": StreamLanguage.define(tomlLanguage),
"json": StreamLanguage.define(jsonLanguage),
"xml": StreamLanguage.define(xmlLanguage),
"c": StreamLanguage.define(cLanguage),
"cpp": StreamLanguage.define(cppLanguage),
"c++": StreamLanguage.define(cppLanguage),
"cxx": StreamLanguage.define(cppLanguage),
"java": StreamLanguage.define(javaLanguage),
"csharp": StreamLanguage.define(csharpLanguage),
"cs": StreamLanguage.define(csharpLanguage),
"c#": StreamLanguage.define(csharpLanguage),
"scala": StreamLanguage.define(scalaLanguage),
"kotlin": StreamLanguage.define(kotlinLanguage),
"objc": StreamLanguage.define(objectiveCLanguage),
"objective-c": StreamLanguage.define(objectiveCLanguage),
"objectivec": StreamLanguage.define(objectiveCLanguage),
"objcpp": StreamLanguage.define(objectiveCppLanguage),
"objective-cpp": StreamLanguage.define(objectiveCppLanguage),
"objectivecpp": StreamLanguage.define(objectiveCppLanguage),
"objective-c++": StreamLanguage.define(objectiveCppLanguage),
"objectivec++": StreamLanguage.define(objectiveCppLanguage),
"dart": StreamLanguage.define(dartLanguage),
"query": LRLanguage.define({
name: "query",
parser: highlightingDirectiveParser,
}),
};
export function languageFor(name: string): Language | null {
if (builtinLanguages[name]) {
return builtinLanguages[name];
}
if (name.startsWith("#")) {
return StreamLanguage.define(yamlLanguage);
}
return null;
}