diff --git a/README.md b/README.md
index 4a69180..20eb1c6 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,6 @@
Next generation Tree Sitter Java binding.
[](https://github.com/bonede/tree-sitter-ng/actions)
-
[](https://central.sonatype.com/artifact/io.github.bonede/tree-sitter)
# Getting started
@@ -12,7 +11,7 @@ Add dependencies to your `build.gradle` or `pom.xml`.
// Gradle
dependencies {
// add tree sitter
- implementation 'io.github.bonede:tree-sitter:0.22.1'
+ implementation 'io.github.bonede:tree-sitter:0.22.2'
// add json parser
implementation 'io.github.bonede:tree-sitter-json:0.20.1'
}
@@ -25,7 +24,7 @@ dependencies {
io.github.bonede
tree-sitter
- 0.22.1
+ 0.22.2
@@ -126,6 +125,8 @@ class Main {
| `io.github.bonede:tree-sitter-markdown:0.7.1` |  |
| `io.github.bonede:tree-sitter-meson:1.2` |  |
| `io.github.bonede:tree-sitter-nix:master` |  |
+| `io.github.bonede:tree-sitter-nginx:main` |  |
+| `io.github.bonede:tree-sitter-nim:0.5.0` |  |
| `io.github.bonede:tree-sitter-objc:main` |  |
| `io.github.bonede:tree-sitter-ocaml:0.20.4` |  |
| `io.github.bonede:tree-sitter-ohm:main` |  |
diff --git a/settings.gradle b/settings.gradle
index db528e2..94c9f18 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -116,3 +116,5 @@ include 'tree-sitter-zig'
include 'tree-sitter-tact'
include 'tree-sitter-ohm'
include 'tree-sitter-p4'
+include 'tree-sitter-nginx'
+include 'tree-sitter-nim'
diff --git a/tree-sitter-nginx/build.gradle b/tree-sitter-nginx/build.gradle
new file mode 100644
index 0000000..f2d9f10
--- /dev/null
+++ b/tree-sitter-nginx/build.gradle
@@ -0,0 +1,154 @@
+
+
+import org.treesitter.build.Utils
+
+plugins {
+ id 'java'
+ id 'signing'
+ id 'maven-publish'
+}
+
+group = 'io.github.bonede'
+version = libVersion
+
+repositories {
+ mavenCentral()
+}
+
+dependencies {
+ testImplementation platform('org.junit:junit-bom:5.9.1')
+ testImplementation 'org.junit.jupiter:junit-jupiter'
+ implementation project(":tree-sitter")
+}
+
+test {
+ useJUnitPlatform()
+}
+def libName = "tree-sitter-nginx"
+
+
+java {
+ withJavadocJar()
+ withSourcesJar()
+}
+
+publishing {
+ repositories {
+ maven {
+ name = "MavenCentral"
+ def releasesRepoUrl = "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/"
+ def snapshotsRepoUrl = "https://s01.oss.sonatype.org/content/repositories/snapshots/"
+ credentials {
+ username = ossrhUsername
+ password = ossrhPassword
+ }
+ url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
+ }
+ }
+ publications {
+ maven(MavenPublication) {
+ from components.java
+ pom {
+ name = libName
+ url = 'https://github.com/bonede/tree-sitter-ng'
+ description = "Next generation Tree Sitter Java binding"
+ licenses {
+ license {
+ name = 'MIT'
+ }
+ }
+ scm {
+ connection = 'scm:git:https://github.com/bonede/tree-sitter-ng.git'
+ developerConnection = 'scm:git:https://github.com/bonede/tree-sitter-ng.git'
+ url = 'https://github.com/bonede/tree-sitter-ng'
+ }
+ developers {
+ developer {
+ id = 'bonede'
+ name = 'Wang Liang'
+ email = 'bonede@qq.com'
+ }
+ }
+ }
+ }
+ }
+}
+
+
+signing {
+ sign configurations.archives
+ sign publishing.publications
+}
+tasks.register('downloadSource') {
+ group = "build setup"
+ description = "Download parser source"
+ def zipUrl = "https://gitlab.com/joncoole/tree-sitter-nginx/-/archive/main/tree-sitter-nginx-main.zip"
+ def downloadDir = Utils.libDownloadDir(project, libName)
+ def zip = Utils.libZipFile(project, libName, libVersion)
+ def parserCFile = Utils.libParserCFile(project, libName, libVersion)
+ inputs.files(layout.projectDirectory.file("gradle.properties"))
+ outputs.files(parserCFile)
+ doLast {
+ download.run {
+ src zipUrl
+ dest zip
+ overwrite false
+ }
+ copy {
+ from zipTree(zip)
+ into downloadDir
+ }
+ }
+
+}
+
+tasks.register("buildNative") {
+ group = "build"
+ description = "Build parser native modules"
+ dependsOn "downloadSource", rootProject.bootstrap
+ def jniSrcDir = Utils.jniSrcDir(project)
+ def outDir = Utils.jniOutDir(project)
+ def jniCFile = Utils.jniCFile(project, "org_treesitter_TreeSitterNginx.c")
+ def parserCFile = Utils.libParserCFile(project, libName, libVersion)
+ def scannerCFile = Utils.libScannerCFile(project, libName, libVersion)
+ def libSrcDir = Utils.libSrcDir(project, libName, libVersion)
+ def jniInclude = Utils.jniIncludeDir(project)
+
+ def targets = Utils.treeSitterTargets(project)
+ def outputFiles = targets.collect()
+ { t -> Utils.jniOutFile(project, t, libName)}
+ def srcFiles = project.fileTree(libSrcDir) {
+ include(Utils.libFiles())
+ }.toList()
+ outputs.files(outputFiles)
+ def inputFiles = srcFiles + [parserCFile, rootProject.layout.projectDirectory.file("gradle.properties")]
+ inputs.files(inputFiles)
+ doLast{
+ mkdir(outDir)
+ targets.each {target ->
+ def jniMdInclude = Utils.jniMdInclude(project, target)
+ def jniOutFile = Utils.jniOutFile(project, target, libName)
+ def files = project.fileTree(libSrcDir) {
+ include(Utils.libFiles())
+ }.toList()
+ def cmd = [
+ rootProject.downloadZig.zigExe, "c++",
+ "-g0",
+ "-shared",
+ "-target", target,
+ "-I", libSrcDir,
+ "-I", jniInclude,
+ "-I", jniMdInclude,
+ "-o", jniOutFile,
+ jniCFile,
+ ]
+
+ cmd.addAll(files)
+ exec{
+ workingDir jniSrcDir
+ commandLine(cmd)
+ }
+ }
+ Utils.removeWindowsDebugFiles(project)
+ }
+}
diff --git a/tree-sitter-nginx/gradle.properties b/tree-sitter-nginx/gradle.properties
new file mode 100644
index 0000000..a00b371
--- /dev/null
+++ b/tree-sitter-nginx/gradle.properties
@@ -0,0 +1 @@
+libVersion=main
\ No newline at end of file
diff --git a/tree-sitter-nginx/src/main/c/org_treesitter_TreeSitterNginx.c b/tree-sitter-nginx/src/main/c/org_treesitter_TreeSitterNginx.c
new file mode 100644
index 0000000..8bf205a
--- /dev/null
+++ b/tree-sitter-nginx/src/main/c/org_treesitter_TreeSitterNginx.c
@@ -0,0 +1,12 @@
+
+#include
+void *tree_sitter_nginx();
+/*
+ * Class: org_treesitter_TreeSitterNginx
+ * Method: tree_sitter_nginx
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_org_treesitter_TreeSitterNginx_tree_1sitter_1nginx
+ (JNIEnv *env, jclass clz){
+ return (jlong) tree_sitter_nginx();
+}
diff --git a/tree-sitter-nginx/src/main/java/org/treesitter/TreeSitterNginx.java b/tree-sitter-nginx/src/main/java/org/treesitter/TreeSitterNginx.java
new file mode 100644
index 0000000..f695cba
--- /dev/null
+++ b/tree-sitter-nginx/src/main/java/org/treesitter/TreeSitterNginx.java
@@ -0,0 +1,23 @@
+
+package org.treesitter;
+
+import org.treesitter.utils.NativeUtils;
+
+public class TreeSitterNginx implements TSLanguage {
+
+ static {
+ NativeUtils.loadLib("lib/tree-sitter-nginx");
+ }
+ private native static long tree_sitter_nginx();
+
+ private final long ptr;
+
+ public TreeSitterNginx() {
+ ptr = tree_sitter_nginx();
+ }
+
+ @Override
+ public long getPtr() {
+ return ptr;
+ }
+}
diff --git a/tree-sitter-nginx/src/main/resources/lib/aarch64-linux-gnu-tree-sitter-nginx.so b/tree-sitter-nginx/src/main/resources/lib/aarch64-linux-gnu-tree-sitter-nginx.so
new file mode 100644
index 0000000..0eb3dd2
Binary files /dev/null and b/tree-sitter-nginx/src/main/resources/lib/aarch64-linux-gnu-tree-sitter-nginx.so differ
diff --git a/tree-sitter-nginx/src/main/resources/lib/aarch64-macos-tree-sitter-nginx.dylib b/tree-sitter-nginx/src/main/resources/lib/aarch64-macos-tree-sitter-nginx.dylib
new file mode 100644
index 0000000..9d920a6
Binary files /dev/null and b/tree-sitter-nginx/src/main/resources/lib/aarch64-macos-tree-sitter-nginx.dylib differ
diff --git a/tree-sitter-nginx/src/main/resources/lib/x86_64-linux-gnu-tree-sitter-nginx.so b/tree-sitter-nginx/src/main/resources/lib/x86_64-linux-gnu-tree-sitter-nginx.so
new file mode 100644
index 0000000..c859f74
Binary files /dev/null and b/tree-sitter-nginx/src/main/resources/lib/x86_64-linux-gnu-tree-sitter-nginx.so differ
diff --git a/tree-sitter-nginx/src/main/resources/lib/x86_64-macos-tree-sitter-nginx.dylib b/tree-sitter-nginx/src/main/resources/lib/x86_64-macos-tree-sitter-nginx.dylib
new file mode 100644
index 0000000..e8c836e
Binary files /dev/null and b/tree-sitter-nginx/src/main/resources/lib/x86_64-macos-tree-sitter-nginx.dylib differ
diff --git a/tree-sitter-nginx/src/main/resources/lib/x86_64-windows-tree-sitter-nginx.dll b/tree-sitter-nginx/src/main/resources/lib/x86_64-windows-tree-sitter-nginx.dll
new file mode 100644
index 0000000..6f68b1a
Binary files /dev/null and b/tree-sitter-nginx/src/main/resources/lib/x86_64-windows-tree-sitter-nginx.dll differ
diff --git a/tree-sitter-nginx/src/test/java/org/treesitter/TreeSitterNginxTest.java b/tree-sitter-nginx/src/test/java/org/treesitter/TreeSitterNginxTest.java
new file mode 100644
index 0000000..cbb33b7
--- /dev/null
+++ b/tree-sitter-nginx/src/test/java/org/treesitter/TreeSitterNginxTest.java
@@ -0,0 +1,11 @@
+
+package org.treesitter;
+
+import org.junit.jupiter.api.Test;
+
+class TreeSitterNginxTest {
+ @Test
+ void init() {
+ new TreeSitterNginx();
+ }
+}
diff --git a/tree-sitter-nim/build.gradle b/tree-sitter-nim/build.gradle
new file mode 100644
index 0000000..1e760d3
--- /dev/null
+++ b/tree-sitter-nim/build.gradle
@@ -0,0 +1,154 @@
+
+
+import org.treesitter.build.Utils
+
+plugins {
+ id 'java'
+ id 'signing'
+ id 'maven-publish'
+}
+
+group = 'io.github.bonede'
+version = libVersion
+
+repositories {
+ mavenCentral()
+}
+
+dependencies {
+ testImplementation platform('org.junit:junit-bom:5.9.1')
+ testImplementation 'org.junit.jupiter:junit-jupiter'
+ implementation project(":tree-sitter")
+}
+
+test {
+ useJUnitPlatform()
+}
+def libName = "tree-sitter-nim"
+
+
+java {
+ withJavadocJar()
+ withSourcesJar()
+}
+
+publishing {
+ repositories {
+ maven {
+ name = "MavenCentral"
+ def releasesRepoUrl = "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/"
+ def snapshotsRepoUrl = "https://s01.oss.sonatype.org/content/repositories/snapshots/"
+ credentials {
+ username = ossrhUsername
+ password = ossrhPassword
+ }
+ url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
+ }
+ }
+ publications {
+ maven(MavenPublication) {
+ from components.java
+ pom {
+ name = libName
+ url = 'https://github.com/bonede/tree-sitter-ng'
+ description = "Next generation Tree Sitter Java binding"
+ licenses {
+ license {
+ name = 'MIT'
+ }
+ }
+ scm {
+ connection = 'scm:git:https://github.com/bonede/tree-sitter-ng.git'
+ developerConnection = 'scm:git:https://github.com/bonede/tree-sitter-ng.git'
+ url = 'https://github.com/bonede/tree-sitter-ng'
+ }
+ developers {
+ developer {
+ id = 'bonede'
+ name = 'Wang Liang'
+ email = 'bonede@qq.com'
+ }
+ }
+ }
+ }
+ }
+}
+
+
+signing {
+ sign configurations.archives
+ sign publishing.publications
+}
+tasks.register('downloadSource') {
+ group = "build setup"
+ description = "Download parser source"
+ def zipUrl = "https://codeload.github.com/alaviss/tree-sitter-nim/zip/refs/tags/0.5.0"
+ def downloadDir = Utils.libDownloadDir(project, libName)
+ def zip = Utils.libZipFile(project, libName, libVersion)
+ def parserCFile = Utils.libParserCFile(project, libName, libVersion)
+ inputs.files(layout.projectDirectory.file("gradle.properties"))
+ outputs.files(parserCFile)
+ doLast {
+ download.run {
+ src zipUrl
+ dest zip
+ overwrite false
+ }
+ copy {
+ from zipTree(zip)
+ into downloadDir
+ }
+ }
+
+}
+
+tasks.register("buildNative") {
+ group = "build"
+ description = "Build parser native modules"
+ dependsOn "downloadSource", rootProject.bootstrap
+ def jniSrcDir = Utils.jniSrcDir(project)
+ def outDir = Utils.jniOutDir(project)
+ def jniCFile = Utils.jniCFile(project, "org_treesitter_TreeSitterNim.c")
+ def parserCFile = Utils.libParserCFile(project, libName, libVersion)
+ def scannerCFile = Utils.libScannerCFile(project, libName, libVersion)
+ def libSrcDir = Utils.libSrcDir(project, libName, libVersion)
+ def jniInclude = Utils.jniIncludeDir(project)
+
+ def targets = Utils.treeSitterTargets(project)
+ def outputFiles = targets.collect()
+ { t -> Utils.jniOutFile(project, t, libName)}
+ def srcFiles = project.fileTree(libSrcDir) {
+ include(Utils.libFiles())
+ }.toList()
+ outputs.files(outputFiles)
+ def inputFiles = srcFiles + [parserCFile, rootProject.layout.projectDirectory.file("gradle.properties")]
+ inputs.files(inputFiles)
+ doLast{
+ mkdir(outDir)
+ targets.each {target ->
+ def jniMdInclude = Utils.jniMdInclude(project, target)
+ def jniOutFile = Utils.jniOutFile(project, target, libName)
+ def files = project.fileTree(libSrcDir) {
+ include(Utils.libFiles())
+ }.toList()
+ def cmd = [
+ rootProject.downloadZig.zigExe, "c++",
+ "-g0",
+ "-shared",
+ "-target", target,
+ "-I", libSrcDir,
+ "-I", jniInclude,
+ "-I", jniMdInclude,
+ "-o", jniOutFile,
+ jniCFile,
+ ]
+
+ cmd.addAll(files)
+ exec{
+ workingDir jniSrcDir
+ commandLine(cmd)
+ }
+ }
+ Utils.removeWindowsDebugFiles(project)
+ }
+}
diff --git a/tree-sitter-nim/gradle.properties b/tree-sitter-nim/gradle.properties
new file mode 100644
index 0000000..8c6a965
--- /dev/null
+++ b/tree-sitter-nim/gradle.properties
@@ -0,0 +1 @@
+libVersion=0.5.0
\ No newline at end of file
diff --git a/tree-sitter-nim/src/main/c/org_treesitter_TreeSitterNim.c b/tree-sitter-nim/src/main/c/org_treesitter_TreeSitterNim.c
new file mode 100644
index 0000000..4e1914b
--- /dev/null
+++ b/tree-sitter-nim/src/main/c/org_treesitter_TreeSitterNim.c
@@ -0,0 +1,12 @@
+
+#include
+void *tree_sitter_nim();
+/*
+ * Class: org_treesitter_TreeSitterNim
+ * Method: tree_sitter_nim
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_org_treesitter_TreeSitterNim_tree_1sitter_1nim
+ (JNIEnv *env, jclass clz){
+ return (jlong) tree_sitter_nim();
+}
diff --git a/tree-sitter-nim/src/main/java/org/treesitter/TreeSitterNim.java b/tree-sitter-nim/src/main/java/org/treesitter/TreeSitterNim.java
new file mode 100644
index 0000000..4ee2834
--- /dev/null
+++ b/tree-sitter-nim/src/main/java/org/treesitter/TreeSitterNim.java
@@ -0,0 +1,23 @@
+
+package org.treesitter;
+
+import org.treesitter.utils.NativeUtils;
+
+public class TreeSitterNim implements TSLanguage {
+
+ static {
+ NativeUtils.loadLib("lib/tree-sitter-nim");
+ }
+ private native static long tree_sitter_nim();
+
+ private final long ptr;
+
+ public TreeSitterNim() {
+ ptr = tree_sitter_nim();
+ }
+
+ @Override
+ public long getPtr() {
+ return ptr;
+ }
+}
diff --git a/tree-sitter-nim/src/main/resources/lib/aarch64-linux-gnu-tree-sitter-nim.so b/tree-sitter-nim/src/main/resources/lib/aarch64-linux-gnu-tree-sitter-nim.so
new file mode 100644
index 0000000..0acfbf7
Binary files /dev/null and b/tree-sitter-nim/src/main/resources/lib/aarch64-linux-gnu-tree-sitter-nim.so differ
diff --git a/tree-sitter-nim/src/main/resources/lib/aarch64-macos-tree-sitter-nim.dylib b/tree-sitter-nim/src/main/resources/lib/aarch64-macos-tree-sitter-nim.dylib
new file mode 100644
index 0000000..404252e
Binary files /dev/null and b/tree-sitter-nim/src/main/resources/lib/aarch64-macos-tree-sitter-nim.dylib differ
diff --git a/tree-sitter-nim/src/main/resources/lib/x86_64-linux-gnu-tree-sitter-nim.so b/tree-sitter-nim/src/main/resources/lib/x86_64-linux-gnu-tree-sitter-nim.so
new file mode 100644
index 0000000..cc351aa
Binary files /dev/null and b/tree-sitter-nim/src/main/resources/lib/x86_64-linux-gnu-tree-sitter-nim.so differ
diff --git a/tree-sitter-nim/src/main/resources/lib/x86_64-macos-tree-sitter-nim.dylib b/tree-sitter-nim/src/main/resources/lib/x86_64-macos-tree-sitter-nim.dylib
new file mode 100644
index 0000000..d63fc98
Binary files /dev/null and b/tree-sitter-nim/src/main/resources/lib/x86_64-macos-tree-sitter-nim.dylib differ
diff --git a/tree-sitter-nim/src/main/resources/lib/x86_64-windows-tree-sitter-nim.dll b/tree-sitter-nim/src/main/resources/lib/x86_64-windows-tree-sitter-nim.dll
new file mode 100644
index 0000000..7628e1f
Binary files /dev/null and b/tree-sitter-nim/src/main/resources/lib/x86_64-windows-tree-sitter-nim.dll differ
diff --git a/tree-sitter-nim/src/test/java/org/treesitter/TreeSitterNimTest.java b/tree-sitter-nim/src/test/java/org/treesitter/TreeSitterNimTest.java
new file mode 100644
index 0000000..ee54f60
--- /dev/null
+++ b/tree-sitter-nim/src/test/java/org/treesitter/TreeSitterNimTest.java
@@ -0,0 +1,11 @@
+
+package org.treesitter;
+
+import org.junit.jupiter.api.Test;
+
+class TreeSitterNimTest {
+ @Test
+ void init() {
+ new TreeSitterNim();
+ }
+}
diff --git a/tree-sitter/gradle.properties b/tree-sitter/gradle.properties
index f000aa1..43d7c4a 100644
--- a/tree-sitter/gradle.properties
+++ b/tree-sitter/gradle.properties
@@ -1 +1 @@
-treesitterVersion=0.22.1
\ No newline at end of file
+treesitterVersion=0.22.2
\ No newline at end of file
diff --git a/tree-sitter/src/main/resources/lib/aarch64-linux-gnu-tree-sitter.so b/tree-sitter/src/main/resources/lib/aarch64-linux-gnu-tree-sitter.so
index b7ef302..2785d9f 100644
Binary files a/tree-sitter/src/main/resources/lib/aarch64-linux-gnu-tree-sitter.so and b/tree-sitter/src/main/resources/lib/aarch64-linux-gnu-tree-sitter.so differ
diff --git a/tree-sitter/src/main/resources/lib/aarch64-macos-tree-sitter.dylib b/tree-sitter/src/main/resources/lib/aarch64-macos-tree-sitter.dylib
index c7bd974..045b867 100644
Binary files a/tree-sitter/src/main/resources/lib/aarch64-macos-tree-sitter.dylib and b/tree-sitter/src/main/resources/lib/aarch64-macos-tree-sitter.dylib differ
diff --git a/tree-sitter/src/main/resources/lib/x86_64-linux-gnu-tree-sitter.so b/tree-sitter/src/main/resources/lib/x86_64-linux-gnu-tree-sitter.so
index 17fa6fd..67fcdc9 100644
Binary files a/tree-sitter/src/main/resources/lib/x86_64-linux-gnu-tree-sitter.so and b/tree-sitter/src/main/resources/lib/x86_64-linux-gnu-tree-sitter.so differ
diff --git a/tree-sitter/src/main/resources/lib/x86_64-macos-tree-sitter.dylib b/tree-sitter/src/main/resources/lib/x86_64-macos-tree-sitter.dylib
index 0dd6dc4..b5956d4 100644
Binary files a/tree-sitter/src/main/resources/lib/x86_64-macos-tree-sitter.dylib and b/tree-sitter/src/main/resources/lib/x86_64-macos-tree-sitter.dylib differ
diff --git a/tree-sitter/src/main/resources/lib/x86_64-windows-tree-sitter.dll b/tree-sitter/src/main/resources/lib/x86_64-windows-tree-sitter.dll
index 1a0f29f..a4911c8 100644
Binary files a/tree-sitter/src/main/resources/lib/x86_64-windows-tree-sitter.dll and b/tree-sitter/src/main/resources/lib/x86_64-windows-tree-sitter.dll differ