81 lines
3.1 KiB
Python
81 lines
3.1 KiB
Python
class Language:
|
|
id: str
|
|
spoken_forms: list[str]
|
|
extensions: list[str]
|
|
|
|
def __init__(self, id: str, spoken_form: str | list[str], extensions: list[str]):
|
|
self.id = id
|
|
self.spoken_forms = (
|
|
[spoken_form] if isinstance(spoken_form, str) else spoken_form
|
|
)
|
|
self.extensions = extensions
|
|
|
|
|
|
# Maps code language identifiers, names and file extensions. Only put languages
|
|
# here which have a supported language mode; that's why there are so many
|
|
# commented out entries.
|
|
code_languages = [
|
|
# Language("assembly", "assembly", ["asm", "s"]),
|
|
# Language("bash", "bash", ["sh", "bashbook"]),
|
|
Language("batch", "batch", ["bat"]),
|
|
Language("c", "see", ["c", "h"]),
|
|
# Language("cmake", "see make", ["cmake"]),
|
|
Language("csharp", "see sharp", ["cs"]),
|
|
Language("css", "c s s", ["css"]),
|
|
# Language("elisp", "elisp", ["el"]),
|
|
Language("elixir", "elixir", ["ex"]),
|
|
# Language("elm", "elm", ["elm"]),
|
|
Language("gdb", "g d b", ["gdb"]),
|
|
Language("go", ["go lang", "go language"], ["go"]),
|
|
Language("java", "java", ["java"]),
|
|
Language("javascript", "java script", ["js"]),
|
|
Language("javascriptreact", "java script react", ["jsx"]),
|
|
# Language("jsonl", "json lines", ["jsonl"]),
|
|
Language("kotlin", "kotlin", ["kt"]),
|
|
Language("lua", "lua", ["lua"]),
|
|
Language("markdown", "mark down", ["md"]),
|
|
# Language("perl", "perl", ["pl"]),
|
|
Language("php", "p h p", ["php"]),
|
|
# Language("powershell", "power shell", ["ps1"]),
|
|
Language("protobuf", "proto buf", ["proto"]),
|
|
Language("python", "python", ["py"]),
|
|
Language("r", "are language", ["r"]),
|
|
# Language("racket", "racket", ["rkt"]),
|
|
Language("ruby", "ruby", ["rb"]),
|
|
Language("rust", "rust", ["rs"]),
|
|
Language("scala", "scala", ["scala"]),
|
|
Language("scss", "scss", ["scss"]),
|
|
# Language("snippets", "snippets", ["snippets"]),
|
|
Language("sql", "sql", ["sql"]),
|
|
Language("stata", "stata", ["do", "ado"]),
|
|
Language("talon", "talon", ["talon"]),
|
|
Language("talonlist", "talon list", ["talon-list"]),
|
|
Language("terraform", "terraform", ["tf"]),
|
|
Language("tex", ["tech", "lay tech", "latex"], ["tex"]),
|
|
Language("typescript", "type script", ["ts"]),
|
|
Language("typescriptreact", "type script react", ["tsx"]),
|
|
# Language("vba", "vba", ["vba"]),
|
|
Language("vimscript", "vim script", ["vim", "vimrc"]),
|
|
# These languages doesn't actually have a language mode, but we do have snippets.
|
|
Language("cpp", "see plus plus", ["cpp", "hpp"]),
|
|
Language("csv", "csv", ["csv"]),
|
|
Language("html", "html", ["html"]),
|
|
Language("json", "json", ["json"]),
|
|
Language("shellscript", "shell script", ["sh"]),
|
|
Language("xml", "xml", ["xml"]),
|
|
]
|
|
|
|
# Files without specific extensions but are associated with languages
|
|
# Maps full filename to language identifiers
|
|
code_special_file_map = {
|
|
"CMakeLists.txt": "cmake",
|
|
"Makefile": "make",
|
|
"Dockerfile": "docker",
|
|
"meson.build": "meson",
|
|
".bashrc": "bash",
|
|
".zshrc": "zsh",
|
|
"PKGBUILD": "pkgbuild",
|
|
".vimrc": "vimscript",
|
|
"vimrc": "vimscript",
|
|
}
|