aboutsummaryrefslogtreecommitdiff
path: root/runtime/queries/php-only
diff options
context:
space:
mode:
authorLeonardo EugĂȘnio2024-03-17 23:07:09 +0000
committerGitHub2024-03-17 23:07:09 +0000
commitd99b6177c21df836c80cc60a500c73d64a7f9bfd (patch)
treedb329bf47f070daa3b16a10648a7c943fe53c01a /runtime/queries/php-only
parenteead105f94c552259cdbf1f572d047cbabb24c49 (diff)
Add blade support (#9513)
* Add php-only language config and queries php-only is required enabling php injections like in blade templates * Add blade templates support
Diffstat (limited to 'runtime/queries/php-only')
-rw-r--r--runtime/queries/php-only/highlights.scm123
-rw-r--r--runtime/queries/php-only/injections.scm10
-rw-r--r--runtime/queries/php-only/tags.scm40
3 files changed, 173 insertions, 0 deletions
diff --git a/runtime/queries/php-only/highlights.scm b/runtime/queries/php-only/highlights.scm
new file mode 100644
index 00000000..9fdbe029
--- /dev/null
+++ b/runtime/queries/php-only/highlights.scm
@@ -0,0 +1,123 @@
+(php_tag) @tag
+"?>" @tag
+
+; Types
+
+(primitive_type) @type.builtin
+(cast_type) @type.builtin
+(named_type (name) @type) @type
+(named_type (qualified_name) @type) @type
+
+; Functions
+
+(array_creation_expression "array" @function.builtin)
+(list_literal "list" @function.builtin)
+
+(method_declaration
+ name: (name) @function.method)
+
+(function_call_expression
+ function: [(qualified_name (name)) (name)] @function)
+
+(scoped_call_expression
+ name: (name) @function)
+
+(member_call_expression
+ name: (name) @function.method)
+
+(function_definition
+ name: (name) @function)
+
+; Member
+
+(property_element
+ (variable_name) @variable.other.member)
+
+(member_access_expression
+ name: (variable_name (name)) @variable.other.member)
+(member_access_expression
+ name: (name) @variable.other.member)
+
+; Variables
+
+(relative_scope) @variable.builtin
+
+((name) @constant
+ (#match? @constant "^_?[A-Z][A-Z\\d_]+$"))
+((name) @constant.builtin
+ (#match? @constant.builtin "^__[A-Z][A-Z\d_]+__$"))
+
+((name) @constructor
+ (#match? @constructor "^[A-Z]"))
+
+((name) @variable.builtin
+ (#eq? @variable.builtin "this"))
+
+(variable_name) @variable
+
+; Basic tokens
+[
+ (string)
+ (string_value)
+ (encapsed_string)
+ (heredoc)
+ (heredoc_body)
+ (nowdoc_body)
+] @string
+(boolean) @constant.builtin.boolean
+(null) @constant.builtin
+(integer) @constant.builtin.integer
+(float) @constant.builtin.float
+(comment) @comment
+
+"$" @operator
+
+; Keywords
+
+"abstract" @keyword
+"as" @keyword
+"break" @keyword
+"case" @keyword
+"catch" @keyword
+"class" @keyword
+"const" @keyword
+"continue" @keyword
+"declare" @keyword
+"default" @keyword
+"do" @keyword
+"echo" @keyword
+"else" @keyword
+"elseif" @keyword
+"enddeclare" @keyword
+"endforeach" @keyword
+"endif" @keyword
+"endswitch" @keyword
+"endwhile" @keyword
+"extends" @keyword
+"final" @keyword
+"finally" @keyword
+"for" @keyword
+"foreach" @keyword
+"function" @keyword
+"global" @keyword
+"if" @keyword
+"implements" @keyword
+"include_once" @keyword
+"include" @keyword
+"insteadof" @keyword
+"interface" @keyword
+"namespace" @keyword
+"new" @keyword
+"private" @keyword
+"protected" @keyword
+"public" @keyword
+"require_once" @keyword
+"require" @keyword
+"return" @keyword
+"static" @keyword
+"switch" @keyword
+"throw" @keyword
+"trait" @keyword
+"try" @keyword
+"use" @keyword
+"while" @keyword
diff --git a/runtime/queries/php-only/injections.scm b/runtime/queries/php-only/injections.scm
new file mode 100644
index 00000000..75150f71
--- /dev/null
+++ b/runtime/queries/php-only/injections.scm
@@ -0,0 +1,10 @@
+((comment) @injection.content
+ (#set! injection.language "comment"))
+
+(heredoc
+ (heredoc_body) @injection.content
+ (heredoc_end) @injection.language)
+
+(nowdoc
+ (nowdoc_body) @injection.content
+ (heredoc_end) @injection.language)
diff --git a/runtime/queries/php-only/tags.scm b/runtime/queries/php-only/tags.scm
new file mode 100644
index 00000000..66d594c2
--- /dev/null
+++ b/runtime/queries/php-only/tags.scm
@@ -0,0 +1,40 @@
+(namespace_definition
+ name: (namespace_name) @name) @module
+
+(interface_declaration
+ name: (name) @name) @definition.interface
+
+(trait_declaration
+ name: (name) @name) @definition.interface
+
+(class_declaration
+ name: (name) @name) @definition.class
+
+(class_interface_clause [(name) (qualified_name)] @name) @impl
+
+(property_declaration
+ (property_element (variable_name (name) @name))) @definition.field
+
+(function_definition
+ name: (name) @name) @definition.function
+
+(method_declaration
+ name: (name) @name) @definition.function
+
+(object_creation_expression
+ [
+ (qualified_name (name) @name)
+ (variable_name (name) @name)
+ ]) @reference.class
+
+(function_call_expression
+ function: [
+ (qualified_name (name) @name)
+ (variable_name (name)) @name
+ ]) @reference.call
+
+(scoped_call_expression
+ name: (name) @name) @reference.call
+
+(member_call_expression
+ name: (name) @name) @reference.call