feat: add puppet

This commit is contained in:
Amaan Qureshi 2023-04-26 07:32:41 -04:00
parent 8ec9a50965
commit fe3afeaa73
8 changed files with 293 additions and 0 deletions

View file

@ -296,6 +296,7 @@ We are looking for maintainers to add more parsers and to write query files for
- [x] [proto](https://github.com/mitchellh/tree-sitter-proto) (maintained by @fsouza)
- [x] [prql](https://github.com/PRQL/tree-sitter-prql) (maintained by @matthias-Q)
- [x] [pug](https://github.com/zealot128/tree-sitter-pug) (experimental, maintained by @zealot128)
- [x] [puppet](https://github.com/amaanq/tree-sitter-puppet) (maintained by @amaanq)
- [x] [python](https://github.com/tree-sitter/tree-sitter-python) (maintained by @stsewd, @theHamsta)
- [x] [ql](https://github.com/tree-sitter/tree-sitter-ql) (maintained by @pwntester)
- [x] [qmldir](https://github.com/Decodetalkers/tree-sitter-qmldir) (maintained by @amaanq)

View file

@ -368,6 +368,9 @@
"pug": {
"revision": "884e225b5ecca5d885ae627275f16ef648acd42e"
},
"puppet": {
"revision": "5e1bb979ea71efc0860d4bc56eb3b3f7a670d6ec"
},
"python": {
"revision": "62827156d01c74dc1538266344e788da74536b8a"
},

View file

@ -1111,6 +1111,14 @@ list.pug = {
experimental = true,
}
list.puppet = {
install_info = {
url = "https://github.com/amaanq/tree-sitter-puppet",
files = { "src/parser.c" },
},
maintainers = { "@amaanq" },
}
list.python = {
install_info = {
url = "https://github.com/tree-sitter/tree-sitter-python",

13
queries/puppet/folds.scm Normal file
View file

@ -0,0 +1,13 @@
[
(block)
(defined_resource_type)
(parameter_list)
(attribute_type_entry)
(resource_declaration)
(selector)
(method_call)
(case_statement)
(hash)
(array)
(comment)
] @fold

View file

@ -0,0 +1,194 @@
; Variables
(identifier) @variable
; Includes
"include" @include
(include_statement (identifier) @type)
(include_statement (class_identifier (identifier) @type . ))
; Keywords
[
"class"
"inherits"
"node"
"type"
"tag"
] @keyword
[
"define"
"function"
] @keyword.function
[
"if"
"elsif"
"else"
"case"
] @conditional
(default_case "default" @conditional)
; Properties
(attribute name: (identifier) @property)
(attribute name: (variable (identifier) @property))
; Parameters
(lambda (variable (identifier) @parameter))
(parameter (variable (identifier) @parameter))
(function_call (identifier) @parameter)
(method_call (identifier) @parameter)
; Functions
(function_declaration
"function" . (identifier) @function)
(function_call
(identifier) @function.call "(")
(defined_resource_type
"define" . (identifier) @function)
; Methods
(function_declaration
"function" . (class_identifier (identifier) @method . ))
(function_call
(class_identifier (identifier) @method.call . ))
(defined_resource_type
"define" . (class_identifier (identifier) @method . ))
(method_call
"." . (identifier) @method.call)
; Types
(type) @type
(builtin_type) @type.builtin
(class_definition
(identifier) @type)
(class_definition
(class_identifier (identifier) @type . ))
(class_inherits (identifier) @type)
(class_inherits (class_identifier (identifier) @type . ))
(resource_declaration
(identifier) @type)
(resource_declaration
(class_identifier (identifier) @type . ))
(node_definition (node_name (identifier) @type))
((identifier) @type
(#lua-match? @type "^[A-Z]"))
((identifier) @type.builtin
(#any-of? @type.builtin "Boolean" "Integer" "Float" "String" "Array" "Hash" "Regexp" "Variant" "Data" "Undef" "Default" "File"))
; "Namespaces"
(class_identifier . (identifier) @namespace)
; Operators
[
"or"
"and"
"in"
] @keyword.operator
[
"="
"+="
"->"
"~>"
"<<|"
"<|"
"|>"
"|>>"
"?"
">"
">="
"<="
"<"
"=="
"!="
"<<"
">>"
"+"
"-"
"*"
"/"
"%"
"=~"
"!~"
] @operator
; Punctuation
[
"|"
"."
","
";"
":"
"::"
"=>"
] @punctuation.delimiter
[ "{" "}" ] @punctuation.bracket
[ "[" "]" ] @punctuation.bracket
[ "(" ")" ] @punctuation.bracket
(interpolation [ "${" "}" ] @punctuation.special)
[
"$"
"@"
"@@"
] @punctuation.special
; Literals
(number) @number
(float) @float
(string) @string
(escape_sequence) @string.escape
(regex) @string.regex
(boolean) @boolean
[
(undef)
(default)
] @variable.builtin
; Comments
(comment) @comment @spell
; Errors
(ERROR) @error

View file

@ -0,0 +1,24 @@
[
(block)
(defined_resource_type)
(parameter_list)
(attribute_type_entry)
(resource_declaration)
(selector)
(method_call)
(case_statement)
(hash)
(array)
] @indent.begin
[
"}"
"]"
")"
] @indent.branch @indent.end
[
(string)
(comment)
(ERROR)
] @indent.auto

View file

@ -0,0 +1,4 @@
((regex) @regex
(#offset! @regex 0 1 0 -1))
(comment) @comment

46
queries/puppet/locals.scm Normal file
View file

@ -0,0 +1,46 @@
; Scopes
[
(block)
(defined_resource_type)
(parameter_list)
(attribute_type_entry)
(class_definition)
(node_definition)
(resource_declaration)
(selector)
(method_call)
(case_statement)
(hash)
(array)
] @scope
; References
[
(identifier)
(class_identifier)
(variable)
] @reference
; Definitions
(attribute [(identifier) (variable)] @definition.field)
(function_declaration
[(identifier) (class_identifier)] @definition.function)
(include_statement [(identifier) (class_identifier)] @definition.import)
(parameter (variable) @definition.parameter)
(class_definition
[(identifier) (class_identifier)] @definition.type)
(node_definition
(node_name (identifier) @definition.type))
(resource_declaration
[(identifier) (class_identifier)] @definition.type)
(assignment . (variable) @definition.var)