Skip to content

Commit 22740d4

Browse files
authored
refactor: everything (#6)
* refactor: everything * Fixes * Fix warnings
1 parent 8ff52ba commit 22740d4

File tree

22 files changed

+312
-95
lines changed

22 files changed

+312
-95
lines changed

Cargo.lock

Lines changed: 29 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ edition = "2021"
66
[dependencies]
77
clap = { version = "4.5.28", features = ["derive"] }
88
codegen-sdk-analyzer = { path = "codegen-sdk-analyzer" }
9-
codegen-sdk-cst = { path = "codegen-sdk-cst" }
9+
codegen-sdk-cst = { path = "codegen-sdk-cst" , features = ["typescript", "javascript", "tsx", "jsx"]}
10+
codegen-sdk-common = { path = "codegen-sdk-common" }
1011
crossbeam = "0.8.4"
1112
env_logger = "0.11.6"
1213
glob = "0.3.2"
@@ -19,14 +20,15 @@ members = [
1920
"codegen-sdk-ast",
2021
"codegen-sdk-common",
2122
"codegen-sdk-cst",
22-
"codegen-sdk-cst-generator",
23+
"codegen-sdk-cst-generator", "codegen-sdk-macros",
2324
]
2425
[workspace.dependencies]
2526
log = "0.4.25"
2627
ouroboros = "0.18.5"
2728
tree-sitter = "0.25.1"
2829
tree-sitter-python = "0.23.6"
2930
tree-sitter-typescript = "0.23.2"
31+
tree-sitter-javascript = "0.23.1"
3032
bytes = "1.10.0"
3133
convert_case = "0.7.1"
3234
serde = { version = "1.0.217", features = ["derive"] }

codegen-sdk-common/Cargo.toml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,10 @@ edition = "2021"
77
bytes = { workspace = true }
88
tree-sitter = { workspace = true }
99
ouroboros = { workspace = true }
10+
tree-sitter-python = { workspace = true, optional = true }
11+
tree-sitter-typescript = { workspace = true, optional = true }
12+
tree-sitter-javascript = { workspace = true, optional = true }
13+
lazy_static = "1.5.0"
14+
[features]
15+
python = ["dep:tree-sitter-python"]
16+
typescript = ["dep:tree-sitter-typescript", "dep:tree-sitter-javascript"]

codegen-sdk-common/src/language.rs

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
use tree_sitter::{LanguageError, Parser};
2+
3+
pub struct Language {
4+
pub name: &'static str,
5+
pub struct_name: &'static str,
6+
pub node_types: &'static str,
7+
pub file_extensions: &'static [&'static str],
8+
pub tree_sitter_language: tree_sitter::Language,
9+
}
10+
impl Language {
11+
pub fn parse_tree_sitter(&self, content: &str) -> Result<tree_sitter::Tree, LanguageError> {
12+
let mut parser = Parser::new();
13+
parser.set_language(&self.tree_sitter_language)?;
14+
let tree = parser.parse(content, None).unwrap();
15+
Ok(tree)
16+
}
17+
}
18+
#[cfg(feature = "typescript")]
19+
pub mod javascript;
20+
#[cfg(feature = "typescript")]
21+
pub mod jsx;
22+
#[cfg(feature = "python")]
23+
pub mod python;
24+
#[cfg(feature = "typescript")]
25+
pub mod tsx;
26+
#[cfg(feature = "typescript")]
27+
pub mod typescript;
28+
lazy_static! {
29+
pub static ref LANGUAGES: Vec<&'static Language> = vec![
30+
#[cfg(feature = "python")]
31+
&python::Python,
32+
#[cfg(feature = "typescript")]
33+
&typescript::Typescript,
34+
#[cfg(feature = "typescript")]
35+
&tsx::TSX,
36+
#[cfg(feature = "typescript")]
37+
&jsx::JSX,
38+
#[cfg(feature = "typescript")]
39+
&javascript::Javascript,
40+
];
41+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
use super::Language;
2+
3+
lazy_static! {
4+
pub static ref Javascript: Language = Language {
5+
name: "javascript",
6+
struct_name: "Javascript",
7+
node_types: tree_sitter_javascript::NODE_TYPES,
8+
file_extensions: &["js"],
9+
tree_sitter_language: tree_sitter_javascript::LANGUAGE.into(),
10+
};
11+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
use super::Language;
2+
lazy_static! {
3+
pub static ref JSX: Language = Language {
4+
name: "jsx",
5+
struct_name: "JSX",
6+
node_types: tree_sitter_typescript::TSX_NODE_TYPES,
7+
file_extensions: &["jsx"],
8+
tree_sitter_language: tree_sitter_typescript::LANGUAGE_TSX.into(),
9+
};
10+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
use super::Language;
2+
lazy_static! {
3+
pub static ref Python: Language = Language {
4+
name: "python",
5+
struct_name: "Python",
6+
node_types: tree_sitter_python::NODE_TYPES,
7+
file_extensions: &["py"],
8+
tree_sitter_language: tree_sitter_python::LANGUAGE.into(),
9+
};
10+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
use super::Language;
2+
3+
lazy_static! {
4+
pub static ref TSX: Language = Language {
5+
name: "tsx",
6+
struct_name: "TSX",
7+
node_types: tree_sitter_typescript::TSX_NODE_TYPES,
8+
file_extensions: &["tsx"],
9+
tree_sitter_language: tree_sitter_typescript::LANGUAGE_TSX.into(),
10+
};
11+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
use super::Language;
2+
3+
lazy_static! {
4+
pub static ref Typescript: Language = Language {
5+
name: "typescript",
6+
struct_name: "Typescript",
7+
node_types: tree_sitter_typescript::TYPESCRIPT_NODE_TYPES,
8+
file_extensions: &["ts"],
9+
tree_sitter_language: tree_sitter_typescript::LANGUAGE_TYPESCRIPT.into(),
10+
};
11+
}

codegen-sdk-common/src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
1+
pub mod language;
12
pub mod traits;
23
pub mod utils;
4+
#[macro_use]
5+
extern crate lazy_static;

0 commit comments

Comments
 (0)