mirror of
https://github.com/SilasMarvin/lsp-ai.git
synced 2025-12-17 22:44:24 +01:00
Fix git link issue
This commit is contained in:
Submodule crates/utils-tree-sitter deleted from a38e7143bc
34
crates/utils-tree-sitter/Cargo.toml
Normal file
34
crates/utils-tree-sitter/Cargo.toml
Normal file
@@ -0,0 +1,34 @@
|
||||
[package]
|
||||
name = "utils-tree-sitter"
|
||||
version = "0.1.0"
|
||||
|
||||
edition.workspace = true
|
||||
|
||||
[dependencies]
|
||||
thiserror = "1.0.61"
|
||||
tree-sitter = "0.22"
|
||||
tree-sitter-bash = { version = "0.21", optional = true }
|
||||
tree-sitter-c = { version = "0.21", optional = true }
|
||||
tree-sitter-cpp = { version = "0.22", optional = true }
|
||||
tree-sitter-c-sharp = { version = "0.21", optional = true }
|
||||
tree-sitter-css = { version = "0.21", optional = true }
|
||||
tree-sitter-elixir = { version = "0.2", optional = true }
|
||||
tree-sitter-erlang = { version = "0.6", optional = true }
|
||||
tree-sitter-go = { version = "0.21", optional = true }
|
||||
tree-sitter-html = { version = "0.20", optional = true }
|
||||
tree-sitter-java = { version = "0.21", optional = true }
|
||||
tree-sitter-javascript = { version = "0.21", optional = true }
|
||||
tree-sitter-json = { version = "0.21", optional = true }
|
||||
tree-sitter-haskell = { version = "0.21", optional = true }
|
||||
tree-sitter-lua = { version = "0.1.0", optional = true }
|
||||
tree-sitter-ocaml = { version = "0.22.0", optional = true }
|
||||
tree-sitter-python = { version = "0.21", optional = true }
|
||||
tree-sitter-rust = { version = "0.21", optional = true }
|
||||
tree-sitter-zig = { git = "https://github.com/maxxnino/tree-sitter-zig", optional = true }
|
||||
|
||||
[build-dependencies]
|
||||
cc="*"
|
||||
|
||||
[features]
|
||||
default = []
|
||||
all = ["dep:tree-sitter-python", "dep:tree-sitter-bash", "dep:tree-sitter-c", "dep:tree-sitter-cpp", "dep:tree-sitter-c-sharp", "dep:tree-sitter-css", "dep:tree-sitter-elixir", "dep:tree-sitter-erlang", "dep:tree-sitter-go", "dep:tree-sitter-html", "dep:tree-sitter-java", "dep:tree-sitter-javascript", "dep:tree-sitter-json", "dep:tree-sitter-rust", "dep:tree-sitter-zig", "dep:tree-sitter-haskell", "dep:tree-sitter-lua", "dep:tree-sitter-ocaml"]
|
||||
21
crates/utils-tree-sitter/LICENSE
Normal file
21
crates/utils-tree-sitter/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 Silas Marvin
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
3
crates/utils-tree-sitter/README.md
Normal file
3
crates/utils-tree-sitter/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# utils-tree-sitter
|
||||
|
||||
Utils for working with Tree-sitter
|
||||
90
crates/utils-tree-sitter/src/lib.rs
Normal file
90
crates/utils-tree-sitter/src/lib.rs
Normal file
@@ -0,0 +1,90 @@
|
||||
use thiserror::Error;
|
||||
use tree_sitter::{LanguageError, Parser};
|
||||
|
||||
#[derive(Error, Debug)]
|
||||
pub enum GetParserError {
|
||||
#[error("no parser found for extension")]
|
||||
NoParserFoundForExtension(String),
|
||||
#[error("no parser found for extension")]
|
||||
NoLanguageFoundForExtension(String),
|
||||
#[error("loading grammer")]
|
||||
LoadingGrammer(#[from] LanguageError),
|
||||
}
|
||||
|
||||
fn get_extension_for_language(extension: &str) -> Result<String, GetParserError> {
|
||||
Ok(match extension {
|
||||
"py" => "Python",
|
||||
"rs" => "Rust",
|
||||
"zig" => "Zig",
|
||||
"sh" => "Bash",
|
||||
"c" => "C",
|
||||
"cpp" => "C++",
|
||||
"cs" => "C#",
|
||||
"css" => "CSS",
|
||||
"ex" => "Elixir",
|
||||
"erl" => "Erlang",
|
||||
"go" => "Go",
|
||||
"html" => "HTML",
|
||||
"java" => "Java",
|
||||
"js" => "JavaScript",
|
||||
"json" => "JSON",
|
||||
"hs" => "Haskell",
|
||||
"lua" => "Lua",
|
||||
"ml" => "OCaml",
|
||||
_ => {
|
||||
return Err(GetParserError::NoLanguageFoundForExtension(
|
||||
extension.to_string(),
|
||||
))
|
||||
}
|
||||
}
|
||||
.to_string())
|
||||
}
|
||||
|
||||
pub fn get_parser_for_extension(extension: &str) -> Result<Parser, GetParserError> {
|
||||
let language = get_extension_for_language(extension)?;
|
||||
let mut parser = Parser::new();
|
||||
match language.as_str() {
|
||||
#[cfg(any(feature = "all", feature = "python"))]
|
||||
"Python" => parser.set_language(&tree_sitter_python::language())?,
|
||||
#[cfg(any(feature = "all", feature = "rust"))]
|
||||
"Rust" => parser.set_language(&tree_sitter_rust::language())?,
|
||||
#[cfg(any(feature = "all", feature = "zig"))]
|
||||
"Zig" => parser.set_language(&tree_sitter_zig::language())?,
|
||||
#[cfg(any(feature = "all", feature = "bash"))]
|
||||
"Bash" => parser.set_language(&tree_sitter_bash::language())?,
|
||||
#[cfg(any(feature = "all", feature = "c"))]
|
||||
"C" => parser.set_language(&tree_sitter_c::language())?,
|
||||
#[cfg(any(feature = "all", feature = "cpp"))]
|
||||
"C++" => parser.set_language(&tree_sitter_cpp::language())?,
|
||||
#[cfg(any(feature = "all", feature = "c-sharp"))]
|
||||
"C#" => parser.set_language(&tree_sitter_c_sharp::language())?,
|
||||
#[cfg(any(feature = "all", feature = "css"))]
|
||||
"CSS" => parser.set_language(&tree_sitter_css::language())?,
|
||||
#[cfg(any(feature = "all", feature = "elixir"))]
|
||||
"Elixir" => parser.set_language(&tree_sitter_elixir::language())?,
|
||||
#[cfg(any(feature = "all", feature = "erlang"))]
|
||||
"Erlang" => parser.set_language(&tree_sitter_erlang::language())?,
|
||||
#[cfg(any(feature = "all", feature = "go"))]
|
||||
"Go" => parser.set_language(&tree_sitter_go::language())?,
|
||||
#[cfg(any(feature = "all", feature = "html"))]
|
||||
"HTML" => parser.set_language(&tree_sitter_html::language())?,
|
||||
#[cfg(any(feature = "all", feature = "java"))]
|
||||
"Java" => parser.set_language(&tree_sitter_java::language())?,
|
||||
#[cfg(any(feature = "all", feature = "javascript"))]
|
||||
"JavaScript" => parser.set_language(&tree_sitter_javascript::language())?,
|
||||
#[cfg(any(feature = "all", feature = "json"))]
|
||||
"JSON" => parser.set_language(&tree_sitter_json::language())?,
|
||||
#[cfg(any(feature = "all", feature = "haskell"))]
|
||||
"Haskell" => parser.set_language(&tree_sitter_haskell::language())?,
|
||||
#[cfg(any(feature = "all", feature = "lua"))]
|
||||
"Lua" => parser.set_language(&tree_sitter_lua::language())?,
|
||||
#[cfg(any(feature = "all", feature = "ocaml"))]
|
||||
"OCaml" => parser.set_language(&tree_sitter_ocaml::language_ocaml())?,
|
||||
_ => {
|
||||
return Err(GetParserError::NoParserFoundForExtension(
|
||||
language.to_string(),
|
||||
))
|
||||
}
|
||||
}
|
||||
Ok(parser)
|
||||
}
|
||||
Reference in New Issue
Block a user