summaryrefslogtreecommitdiffstats
path: root/contrib/python/textual/textual/_tree_sitter.py
blob: 193bf16fd4151e4a9d2b3e9fb899ef9ebd31fdcc (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
from __future__ import annotations

try:
    import tree_sitter_bash
    import tree_sitter_css
    import tree_sitter_go
    import tree_sitter_html
    import tree_sitter_java
    import tree_sitter_javascript
    import tree_sitter_json
    import tree_sitter_markdown
    import tree_sitter_python
    import tree_sitter_regex
    import tree_sitter_rust
    import tree_sitter_sql
    import tree_sitter_toml
    import tree_sitter_xml
    import tree_sitter_yaml
    from tree_sitter import Language

    _tree_sitter = True

    _languages = {
        "python": Language(tree_sitter_python.language()),
        "json": Language(tree_sitter_json.language()),
        "markdown": Language(tree_sitter_markdown.language()),
        "yaml": Language(tree_sitter_yaml.language()),
        "toml": Language(tree_sitter_toml.language()),
        "rust": Language(tree_sitter_rust.language()),
        "html": Language(tree_sitter_html.language()),
        "css": Language(tree_sitter_css.language()),
        "xml": Language(tree_sitter_xml.language_xml()),
        "regex": Language(tree_sitter_regex.language()),
        "sql": Language(tree_sitter_sql.language()),
        "javascript": Language(tree_sitter_javascript.language()),
        "java": Language(tree_sitter_java.language()),
        "bash": Language(tree_sitter_bash.language()),
        "go": Language(tree_sitter_go.language()),
    }

    def get_language(language_name: str) -> Language | None:
        return _languages.get(language_name)

except ImportError:
    _tree_sitter = False
    _languages = {}

TREE_SITTER = _tree_sitter
BUILTIN_LANGUAGES: dict[str, "Language"] = _languages