feat(treesitter): install firestore rules parser

This commit is contained in:
2026-02-26 15:13:25 +02:00
parent bfbaa5897f
commit 97fcd0ac81
2 changed files with 84 additions and 0 deletions

View File

@@ -95,6 +95,37 @@ return {
vim.filetype.add({ extension = { ejs = "ejs" } })
vim.treesitter.language.register("embedded_template", "ejs")
-- Firestore Rules tree-sitter parser
local parser_config = require('nvim-treesitter.parsers').get_parser_configs()
parser_config.firestore_rules = {
install_info = {
url = "https://github.com/grimsteel/tree-sitter-firestore-rules",
files = { "src/parser.c" },
branch = "main",
generate_requires_npm = false,
requires_generate_from_grammar = false,
},
filetype = "firestorerules",
}
vim.filetype.add({
pattern = {
["firestore%.rules"] = "firestorerules",
["storage%.rules"] = "firestorerules",
[".*%.rules"] = {
priority = -1,
function(path, bufnr)
local content = vim.api.nvim_buf_get_lines(bufnr, 0, 5, false)
for _, line in ipairs(content) do
if line:match("service%s+cloud%.firestore") or line:match("service%s+firebase%.storage") then
return "firestorerules"
end
end
end,
},
},
})
vim.treesitter.language.register("firestore_rules", "firestorerules")
end, 0)
end
}

View File

@@ -0,0 +1,53 @@
(bool) @constant.builtin
(type) @type.builtin
(number) @number
(hex_number) @number
(string) @string
(bytes) @string.special
"null" @constant.builtin
(action) @constant.builtin
(path) @module
(comment) @comment
(function_block function_name: (ident) @function)
(call function_name: (ident) @function)
"cloud.firestore" @variable.builtin
"rules_version" @variable.builtin
[
"match"
"allow"
"if"
"return"
"function"
"let"
"service"
] @keyword
[
"*"
"/"
"+"
"%"
"in"
"is"
"-"
">="
"<="
">"
"<"
"=="
"="
"!="
"&&"
"||"
] @operator
[
":"
";"
] @punctuation.delimiter
[
"{"
"}"
"["
"]"
"("
")"
] @punctuation.bracket