mirror of
https://github.com/gradio-app/gradio.git
synced 2024-12-27 02:30:17 +08:00
c1a7ea7c0c
* add sql language support, Fixes https://github.com/gradio-app/gradio/issues/7316 * format * add missing languages * add changeset --------- Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com> Co-authored-by: Freddy Boulton <alfonsoboulton@gmail.com>
102 lines
2.3 KiB
TypeScript
102 lines
2.3 KiB
TypeScript
import type { Extension } from "@codemirror/state";
|
|
import { StreamLanguage } from "@codemirror/language";
|
|
import { sql } from "@codemirror/legacy-modes/mode/sql";
|
|
|
|
const possible_langs = [
|
|
"python",
|
|
"markdown",
|
|
"json",
|
|
"html",
|
|
"css",
|
|
"javascript",
|
|
"typescript",
|
|
"yaml",
|
|
"dockerfile",
|
|
"shell",
|
|
"r",
|
|
"sql"
|
|
];
|
|
|
|
const sql_dialects = [
|
|
"standardSQL",
|
|
"msSQL",
|
|
"mySQL",
|
|
"mariaDB",
|
|
"sqlite",
|
|
"cassandra",
|
|
"plSQL",
|
|
"hive",
|
|
"pgSQL",
|
|
"gql",
|
|
"gpSQL",
|
|
"sparkSQL",
|
|
"esper"
|
|
] as const;
|
|
|
|
const lang_map: Record<string, (() => Promise<Extension>) | undefined> = {
|
|
python: () => import("@codemirror/lang-python").then((m) => m.python()),
|
|
markdown: async () => {
|
|
const [md, frontmatter] = await Promise.all([
|
|
import("@codemirror/lang-markdown"),
|
|
import("./frontmatter")
|
|
]);
|
|
return md.markdown({ extensions: [frontmatter.frontmatter] });
|
|
},
|
|
json: () => import("@codemirror/lang-json").then((m) => m.json()),
|
|
html: () => import("@codemirror/lang-html").then((m) => m.html()),
|
|
css: () => import("@codemirror/lang-css").then((m) => m.css()),
|
|
javascript: () =>
|
|
import("@codemirror/lang-javascript").then((m) => m.javascript()),
|
|
typescript: () =>
|
|
import("@codemirror/lang-javascript").then((m) =>
|
|
m.javascript({ typescript: true })
|
|
),
|
|
yaml: () =>
|
|
import("@codemirror/legacy-modes/mode/yaml").then((m) =>
|
|
StreamLanguage.define(m.yaml)
|
|
),
|
|
dockerfile: () =>
|
|
import("@codemirror/legacy-modes/mode/dockerfile").then((m) =>
|
|
StreamLanguage.define(m.dockerFile)
|
|
),
|
|
shell: () =>
|
|
import("@codemirror/legacy-modes/mode/shell").then((m) =>
|
|
StreamLanguage.define(m.shell)
|
|
),
|
|
r: () =>
|
|
import("@codemirror/legacy-modes/mode/r").then((m) =>
|
|
StreamLanguage.define(m.r)
|
|
),
|
|
sql: () =>
|
|
import("@codemirror/legacy-modes/mode/sql").then((m) =>
|
|
StreamLanguage.define(m.standardSQL)
|
|
),
|
|
...Object.fromEntries(
|
|
sql_dialects.map((dialect) => [
|
|
"sql-" + dialect,
|
|
() =>
|
|
import("@codemirror/legacy-modes/mode/sql").then((m) =>
|
|
StreamLanguage.define(m[dialect])
|
|
)
|
|
])
|
|
)
|
|
} as const;
|
|
|
|
const alias_map: Record<string, string> = {
|
|
py: "python",
|
|
md: "markdown",
|
|
js: "javascript",
|
|
ts: "typescript",
|
|
sh: "shell"
|
|
};
|
|
|
|
export async function getLanguageExtension(
|
|
lang: string
|
|
): Promise<Extension | undefined> {
|
|
const _lang = lang_map[lang] || lang_map[alias_map[lang]] || undefined;
|
|
if (_lang) {
|
|
return _lang();
|
|
}
|
|
return undefined;
|
|
}
|