(((comment) @_jsdoc_comment (#lua-match? @_jsdoc_comment "^/[*][*][^*].*[*]/$")) @injection.content (#set! injection.language "jsdoc")) ((comment) @injection.content (#set! injection.language "comment")) ; html(`...`), html`...`, sql(`...`), etc. (call_expression function: [ (await_expression (identifier) @injection.language) (identifier) @injection.language ] arguments: [ (arguments (template_string) @injection.content) (template_string) @injection.content ] (#lua-match? @injection.language "^[a-zA-Z][a-zA-Z0-9]*$") (#offset! @injection.content 0 1 0 -1) (#set! injection.include-children) ; Languages excluded from auto-injection due to special rules ; - svg uses the html parser ; - css uses the styled parser (#not-any-of? @injection.language "svg" "css")) ; svg`...` or svg(`...`) (call_expression function: [ (await_expression (identifier) @_name (#eq? @_name "svg")) ((identifier) @_name (#eq? @_name "svg")) ] arguments: [ (arguments (template_string) @injection.content) (template_string) @injection.content ] (#offset! @injection.content 0 1 0 -1) (#set! injection.include-children) (#set! injection.language "html")) (call_expression function: [ (await_expression (identifier) @_name (#eq? @_name "gql")) ((identifier) @_name (#eq? @_name "gql")) ] arguments: ((template_string) @injection.content (#offset! @injection.content 0 1 0 -1) (#set! injection.include-children) (#set! injection.language "graphql"))) (call_expression function: [ (await_expression (identifier) @_name (#eq? @_name "hbs")) ((identifier) @_name (#eq? @_name "hbs")) ] arguments: ((template_string) @injection.content (#offset! @injection.content 0 1 0 -1) (#set! injection.include-children) (#set! injection.language "glimmer"))) ((glimmer_template) @injection.content (#set! injection.language "glimmer")) ; css``, keyframes`` (call_expression function: [ (await_expression (identifier) @_name (#any-of? @_name "css" "keyframes")) ((identifier) @_name (#any-of? @_name "css" "keyframes")) ] arguments: ((template_string) @injection.content (#offset! @injection.content 0 1 0 -1) (#set! injection.include-children) (#set! injection.language "styled"))) ; styled.div`` (call_expression function: (member_expression object: (identifier) @_name (#eq? @_name "styled")) arguments: ((template_string) @injection.content (#offset! @injection.content 0 1 0 -1) (#set! injection.include-children) (#set! injection.language "styled"))) ; styled(Component)`` (call_expression function: (call_expression function: (identifier) @_name (#eq? @_name "styled")) arguments: ((template_string) @injection.content (#offset! @injection.content 0 1 0 -1) (#set! injection.include-children) (#set! injection.language "styled"))) ; styled.div.attrs({ prop: "foo" })`` (call_expression function: (call_expression function: (member_expression object: (member_expression object: (identifier) @_name (#eq? @_name "styled")))) arguments: ((template_string) @injection.content (#offset! @injection.content 0 1 0 -1) (#set! injection.include-children) (#set! injection.language "styled"))) ; styled(Component).attrs({ prop: "foo" })`` (call_expression function: (call_expression function: (member_expression object: (call_expression function: (identifier) @_name (#eq? @_name "styled")))) arguments: ((template_string) @injection.content (#offset! @injection.content 0 1 0 -1) (#set! injection.include-children) (#set! injection.language "styled"))) ((regex_pattern) @injection.content (#set! injection.language "regex")) ; ((comment) @_gql_comment ; (#eq? @_gql_comment "/* GraphQL */") ; (template_string) @injection.content ; (#set! injection.language "graphql")) ((template_string) @injection.content (#lua-match? @injection.content "^`#graphql") (#offset! @injection.content 0 1 0 -1) (#set! injection.include-children) (#set! injection.language "graphql")) ; el.innerHTML = `` (assignment_expression left: (member_expression property: (property_identifier) @_prop (#any-of? @_prop "outerHTML" "innerHTML")) right: (template_string) @injection.content (#offset! @injection.content 0 1 0 -1) (#set! injection.include-children) (#set! injection.language "html")) ; el.innerHTML = '' (assignment_expression left: (member_expression property: (property_identifier) @_prop (#any-of? @_prop "outerHTML" "innerHTML")) right: (string (string_fragment) @injection.content) (#set! injection.language "html")) ;---- Angular injections ----- ; @Component({ ; template: `` ; }) (decorator (call_expression function: ((identifier) @_name (#eq? @_name "Component")) arguments: (arguments (object (pair key: ((property_identifier) @_prop (#eq? @_prop "template")) value: ((template_string) @injection.content (#offset! @injection.content 0 1 0 -1) (#set! injection.include-children) (#set! injection.language "angular"))))))) ; @Component({ ; styles: [``] ; }) (decorator (call_expression function: ((identifier) @_name (#eq? @_name "Component")) arguments: (arguments (object (pair key: ((property_identifier) @_prop (#eq? @_prop "styles")) value: (array ((template_string) @injection.content (#offset! @injection.content 0 1 0 -1) (#set! injection.include-children) (#set! injection.language "css")))))))) ; @Component({ ; styles: `` ; }) (decorator (call_expression function: ((identifier) @_name (#eq? @_name "Component")) arguments: (arguments (object (pair key: ((property_identifier) @_prop (#eq? @_prop "styles")) value: ((template_string) @injection.content (#set! injection.include-children) (#offset! @injection.content 0 1 0 -1) (#set! injection.language "css")))))))