Fix HEEx directive injections

This commit is contained in:
dvic 2023-08-14 20:59:27 +02:00 committed by Christian Clason
parent 93ee00cd9d
commit 11d79aa0f7

View file

@ -1,14 +1,25 @@
; HEEx directives can span multiple interpolated lines of Elixir
(directive [
(expression_value)
(partial_expression_value)
] @injection.content
; directives are standalone tags like '<%= @x %>'
;
; partial_expression_values are elixir code that is part of an expression that
; spans multiple directive nodes, so they must be combined. For example:
; <%= if true do %>
; <p>hello, tree-sitter!</p>
; <% end %>
(directive
(partial_expression_value) @injection.content
(#set! injection.language "elixir")
(#set! injection.combined))
(#set! injection.include-children)
(#set! injection.combined))
; HEEx Elixir expressions are always within a tag or component
(expression
(expression_value) @injection.content
; Regular expression_values do not need to be combined
((directive
(expression_value) @injection.content)
(#set! injection.language "elixir"))
; expressions live within HTML tags, and do not need to be combined
; <link href={ Routes.static_path(..) } />
(expression
(expression_value) @injection.content
(#set! injection.language "elixir"))
; HEEx comments