Skip to content

Commit c3f405d

Browse files
committed
feat: update bindings with 0.26.3
1 parent 0c4c49b commit c3f405d

File tree

19 files changed

+530
-50
lines changed

19 files changed

+530
-50
lines changed

.editorconfig

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
root = true
2+
3+
[*]
4+
charset = utf-8
5+
6+
[*.{json,toml,yml,gyp,xml}]
7+
indent_style = space
8+
indent_size = 2
9+
10+
[*.{js,ts}]
11+
indent_style = space
12+
indent_size = 2
13+
14+
[*.scm]
15+
indent_style = space
16+
indent_size = 2
17+
18+
[*.{c,cc,h}]
19+
indent_style = space
20+
indent_size = 4
21+
22+
[*.rs]
23+
indent_style = space
24+
indent_size = 4
25+
26+
[*.{py,pyi}]
27+
indent_style = space
28+
indent_size = 4
29+
30+
[*.swift]
31+
indent_style = space
32+
indent_size = 4
33+
34+
[*.java]
35+
indent_style = space
36+
indent_size = 4
37+
38+
[*.go]
39+
indent_style = tab
40+
indent_size = 8
41+
42+
[Makefile]
43+
indent_style = tab
44+
indent_size = 8
45+
46+
[parser.c]
47+
indent_size = 2
48+
49+
[{alloc,array,parser}.h]
50+
indent_size = 2

.eslintrc.js

Lines changed: 0 additions & 34 deletions
This file was deleted.

.gitattributes

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,7 @@ src/parser.c linguist-generated
88
src/grammar.json -diff
99
src/node-types.json -diff
1010
src/parser.c -diff
11+
12+
# Zig bindings
13+
build.zig linguist-generated
14+
build.zig.zon linguist-generated

.npmignore

Lines changed: 0 additions & 5 deletions
This file was deleted.

CMakeLists.txt

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
cmake_minimum_required(VERSION 3.13)
2+
3+
project(tree-sitter-vue
4+
VERSION "0.1.0"
5+
DESCRIPTION "Vue grammar for tree-sitter"
6+
HOMEPAGE_URL "tree-sitter-grammars/tree-sitter-vue"
7+
LANGUAGES C)
8+
9+
option(BUILD_SHARED_LIBS "Build using shared libraries" ON)
10+
option(TREE_SITTER_REUSE_ALLOCATOR "Reuse the library allocator" OFF)
11+
12+
set(TREE_SITTER_ABI_VERSION 15 CACHE STRING "Tree-sitter ABI version")
13+
if(NOT ${TREE_SITTER_ABI_VERSION} MATCHES "^[0-9]+$")
14+
unset(TREE_SITTER_ABI_VERSION CACHE)
15+
message(FATAL_ERROR "TREE_SITTER_ABI_VERSION must be an integer")
16+
endif()
17+
18+
include(GNUInstallDirs)
19+
20+
find_program(TREE_SITTER_CLI tree-sitter DOC "Tree-sitter CLI")
21+
22+
add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/src/grammar.json"
23+
"${CMAKE_CURRENT_SOURCE_DIR}/src/node-types.json"
24+
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/grammar.js"
25+
COMMAND "${TREE_SITTER_CLI}" generate grammar.js --no-parser
26+
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
27+
COMMENT "Generating grammar.json")
28+
29+
add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/src/parser.c"
30+
BYPRODUCTS "${CMAKE_CURRENT_SOURCE_DIR}/src/tree_sitter/parser.h"
31+
"${CMAKE_CURRENT_SOURCE_DIR}/src/tree_sitter/alloc.h"
32+
"${CMAKE_CURRENT_SOURCE_DIR}/src/tree_sitter/array.h"
33+
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/grammar.json"
34+
COMMAND "${TREE_SITTER_CLI}" generate src/grammar.json
35+
--abi=${TREE_SITTER_ABI_VERSION}
36+
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
37+
COMMENT "Generating parser.c")
38+
39+
add_library(tree-sitter-vue src/parser.c)
40+
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/scanner.c)
41+
target_sources(tree-sitter-vue PRIVATE src/scanner.c)
42+
endif()
43+
target_include_directories(tree-sitter-vue
44+
PRIVATE src
45+
INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/bindings/c>
46+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
47+
48+
target_compile_definitions(tree-sitter-vue PRIVATE
49+
$<$<BOOL:${TREE_SITTER_REUSE_ALLOCATOR}>:TREE_SITTER_REUSE_ALLOCATOR>
50+
$<$<CONFIG:Debug>:TREE_SITTER_DEBUG>)
51+
52+
set_target_properties(tree-sitter-vue
53+
PROPERTIES
54+
C_STANDARD 11
55+
POSITION_INDEPENDENT_CODE ON
56+
SOVERSION "${TREE_SITTER_ABI_VERSION}.${PROJECT_VERSION_MAJOR}"
57+
DEFINE_SYMBOL "")
58+
59+
configure_file(bindings/c/tree-sitter-vue.pc.in
60+
"${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-vue.pc" @ONLY)
61+
62+
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bindings/c/tree_sitter"
63+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
64+
FILES_MATCHING PATTERN "*.h")
65+
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-vue.pc"
66+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
67+
install(TARGETS tree-sitter-vue
68+
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")
69+
70+
file(GLOB QUERIES queries/*.scm)
71+
install(FILES ${QUERIES}
72+
DESTINATION "${CMAKE_INSTALL_DATADIR}/tree-sitter/queries/vue")
73+
74+
add_custom_target(ts-test "${TREE_SITTER_CLI}" test
75+
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
76+
COMMENT "tree-sitter test")

Makefile

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
LANGUAGE_NAME := tree-sitter-vue
2+
HOMEPAGE_URL := tree-sitter-grammars/tree-sitter-vue
3+
VERSION := 0.1.0
4+
5+
# repository
6+
SRC_DIR := src
7+
8+
TS ?= tree-sitter
9+
10+
# install directory layout
11+
PREFIX ?= /usr/local
12+
DATADIR ?= $(PREFIX)/share
13+
INCLUDEDIR ?= $(PREFIX)/include
14+
LIBDIR ?= $(PREFIX)/lib
15+
BINDIR ?= $(PREFIX)/bin
16+
PCLIBDIR ?= $(LIBDIR)/pkgconfig
17+
18+
# source/object files
19+
PARSER := $(SRC_DIR)/parser.c
20+
EXTRAS := $(filter-out $(PARSER),$(wildcard $(SRC_DIR)/*.c))
21+
OBJS := $(patsubst %.c,%.o,$(PARSER) $(EXTRAS))
22+
23+
# flags
24+
ARFLAGS ?= rcs
25+
override CFLAGS += -I$(SRC_DIR) -std=c11 -fPIC
26+
27+
# ABI versioning
28+
SONAME_MAJOR = $(shell sed -n 's/\#define LANGUAGE_VERSION //p' $(PARSER))
29+
SONAME_MINOR = $(word 1,$(subst ., ,$(VERSION)))
30+
31+
# OS-specific bits
32+
MACHINE := $(shell $(CC) -dumpmachine)
33+
34+
ifneq ($(findstring darwin,$(MACHINE)),)
35+
SOEXT = dylib
36+
SOEXTVER_MAJOR = $(SONAME_MAJOR).$(SOEXT)
37+
SOEXTVER = $(SONAME_MAJOR).$(SONAME_MINOR).$(SOEXT)
38+
LINKSHARED = -dynamiclib -Wl,-install_name,$(LIBDIR)/lib$(LANGUAGE_NAME).$(SOEXTVER),-rpath,@executable_path/../Frameworks
39+
else ifneq ($(findstring mingw32,$(MACHINE)),)
40+
SOEXT = dll
41+
LINKSHARED += -s -shared -Wl,--out-implib,lib$(LANGUAGE_NAME).dll.a
42+
else
43+
SOEXT = so
44+
SOEXTVER_MAJOR = $(SOEXT).$(SONAME_MAJOR)
45+
SOEXTVER = $(SOEXT).$(SONAME_MAJOR).$(SONAME_MINOR)
46+
LINKSHARED = -shared -Wl,-soname,lib$(LANGUAGE_NAME).$(SOEXTVER)
47+
ifneq ($(filter $(shell uname),FreeBSD NetBSD DragonFly),)
48+
PCLIBDIR := $(PREFIX)/libdata/pkgconfig
49+
endif
50+
endif
51+
52+
all: lib$(LANGUAGE_NAME).a lib$(LANGUAGE_NAME).$(SOEXT) $(LANGUAGE_NAME).pc
53+
54+
lib$(LANGUAGE_NAME).a: $(OBJS)
55+
$(AR) $(ARFLAGS) $@ $^
56+
57+
lib$(LANGUAGE_NAME).$(SOEXT): $(OBJS)
58+
$(CC) $(LDFLAGS) $(LINKSHARED) $^ $(LDLIBS) -o $@
59+
ifneq ($(STRIP),)
60+
$(STRIP) $@
61+
endif
62+
63+
ifneq ($(findstring mingw32,$(MACHINE)),)
64+
lib$(LANGUAGE_NAME).dll.a: lib$(LANGUAGE_NAME).$(SOEXT)
65+
endif
66+
67+
$(LANGUAGE_NAME).pc: bindings/c/$(LANGUAGE_NAME).pc.in
68+
sed -e 's|@PROJECT_VERSION@|$(VERSION)|' \
69+
-e 's|@CMAKE_INSTALL_LIBDIR@|$(LIBDIR:$(PREFIX)/%=%)|' \
70+
-e 's|@CMAKE_INSTALL_INCLUDEDIR@|$(INCLUDEDIR:$(PREFIX)/%=%)|' \
71+
-e 's|@PROJECT_DESCRIPTION@|$(DESCRIPTION)|' \
72+
-e 's|@PROJECT_HOMEPAGE_URL@|$(HOMEPAGE_URL)|' \
73+
-e 's|@CMAKE_INSTALL_PREFIX@|$(PREFIX)|' $< > $@
74+
75+
$(SRC_DIR)/grammar.json: grammar.js
76+
$(TS) generate --no-parser $^
77+
78+
$(PARSER): $(SRC_DIR)/grammar.json
79+
$(TS) generate $^
80+
81+
install: all
82+
install -d '$(DESTDIR)$(DATADIR)'/tree-sitter/queries/vue '$(DESTDIR)$(INCLUDEDIR)'/tree_sitter '$(DESTDIR)$(PCLIBDIR)' '$(DESTDIR)$(LIBDIR)'
83+
install -m644 bindings/c/tree_sitter/$(LANGUAGE_NAME).h '$(DESTDIR)$(INCLUDEDIR)'/tree_sitter/$(LANGUAGE_NAME).h
84+
install -m644 $(LANGUAGE_NAME).pc '$(DESTDIR)$(PCLIBDIR)'/$(LANGUAGE_NAME).pc
85+
install -m644 lib$(LANGUAGE_NAME).a '$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).a
86+
install -m755 lib$(LANGUAGE_NAME).$(SOEXT) '$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).$(SOEXTVER)
87+
ifneq ($(findstring mingw32,$(MACHINE)),)
88+
install -d '$(DESTDIR)$(BINDIR)'
89+
install -m755 lib$(LANGUAGE_NAME).dll '$(DESTDIR)$(BINDIR)'/lib$(LANGUAGE_NAME).dll
90+
install -m755 lib$(LANGUAGE_NAME).dll.a '$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).dll.a
91+
else
92+
install -m755 lib$(LANGUAGE_NAME).$(SOEXT) '$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).$(SOEXTVER)
93+
cd '$(DESTDIR)$(LIBDIR)' && ln -sf lib$(LANGUAGE_NAME).$(SOEXTVER) lib$(LANGUAGE_NAME).$(SOEXTVER_MAJOR)
94+
cd '$(DESTDIR)$(LIBDIR)' && ln -sf lib$(LANGUAGE_NAME).$(SOEXTVER_MAJOR) lib$(LANGUAGE_NAME).$(SOEXT)
95+
endif
96+
ifneq ($(wildcard queries/*.scm),)
97+
install -m644 queries/*.scm '$(DESTDIR)$(DATADIR)'/tree-sitter/queries/vue
98+
endif
99+
100+
uninstall:
101+
$(RM) '$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).a \
102+
'$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).$(SOEXTVER) \
103+
'$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).$(SOEXTVER_MAJOR) \
104+
'$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).$(SOEXT) \
105+
'$(DESTDIR)$(INCLUDEDIR)'/tree_sitter/$(LANGUAGE_NAME).h \
106+
'$(DESTDIR)$(PCLIBDIR)'/$(LANGUAGE_NAME).pc
107+
$(RM) -r '$(DESTDIR)$(DATADIR)'/tree-sitter/queries/vue
108+
109+
clean:
110+
$(RM) $(OBJS) $(LANGUAGE_NAME).pc lib$(LANGUAGE_NAME).a lib$(LANGUAGE_NAME).$(SOEXT) lib$(LANGUAGE_NAME).dll.a
111+
112+
test:
113+
$(TS) test
114+
115+
.PHONY: all install uninstall clean test

bindings/c/tree-sitter-vue.pc.in

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
prefix=@CMAKE_INSTALL_PREFIX@
2+
libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@
3+
includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
4+
5+
Name: tree-sitter-vue
6+
Description: @PROJECT_DESCRIPTION@
7+
URL: @PROJECT_HOMEPAGE_URL@
8+
Version: @PROJECT_VERSION@
9+
Libs: -L${libdir} -ltree-sitter-vue
10+
Cflags: -I${includedir}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#ifndef TREE_SITTER_VUE_H_
2+
#define TREE_SITTER_VUE_H_
3+
4+
typedef struct TSLanguage TSLanguage;
5+
6+
#ifdef __cplusplus
7+
extern "C" {
8+
#endif
9+
10+
const TSLanguage *tree_sitter_vue(void);
11+
12+
#ifdef __cplusplus
13+
}
14+
#endif
15+
16+
#endif // TREE_SITTER_VUE_H_
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
from unittest import TestCase
2+
3+
from tree_sitter import Language, Parser
4+
import tree_sitter_vue
5+
6+
7+
class TestLanguage(TestCase):
8+
def test_can_load_grammar(self):
9+
try:
10+
Parser(Language(tree_sitter_vue.language()))
11+
except Exception:
12+
self.fail("Error loading Vue grammar")
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
"""Vue grammar for tree-sitter"""
2+
3+
from importlib.resources import files as _files
4+
5+
from ._binding import language
6+
7+
8+
def _get_query(name, file):
9+
try:
10+
query = _files(f"{__package__}") / file
11+
globals()[name] = query.read_text()
12+
except FileNotFoundError:
13+
globals()[name] = None
14+
return globals()[name]
15+
16+
17+
def __getattr__(name):
18+
if name == "HIGHLIGHTS_QUERY":
19+
return _get_query("HIGHLIGHTS_QUERY", "queries/highlights.scm")
20+
if name == "INJECTIONS_QUERY":
21+
return _get_query("INJECTIONS_QUERY", "queries/injections.scm")
22+
if name == "LOCALS_QUERY":
23+
return _get_query("LOCALS_QUERY", "queries/locals.scm")
24+
if name == "TAGS_QUERY":
25+
return _get_query("TAGS_QUERY", "queries/tags.scm")
26+
27+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
28+
29+
30+
__all__ = [
31+
"language",
32+
"HIGHLIGHTS_QUERY",
33+
"INJECTIONS_QUERY",
34+
"LOCALS_QUERY",
35+
"TAGS_QUERY",
36+
]
37+
38+
39+
def __dir__():
40+
return sorted(__all__ + [
41+
"__all__", "__builtins__", "__cached__", "__doc__", "__file__",
42+
"__loader__", "__name__", "__package__", "__path__", "__spec__",
43+
])

0 commit comments

Comments
 (0)