summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Occhipinti <dev@stevenocchipinti.com>2021-07-25 16:10:58 +1000
committerStephan Seitz <stephan.seitz@fau.de>2021-11-28 15:02:55 +0100
commitc6b90ee9bd5118aeed32b4717afc56dd7c97be53 (patch)
tree35f2ebf2a2c0d7c9be961f58683bdb0a53475b2a
parent6240dae0e4a83cbd1199b25b3101b782a1a4c06c (diff)
Handle .attrs() cases
Now that there are 4 cases handled, I thought it probably needs some comments to show which case each injection is for. There are other unsupported cases, such as `.withConfig` but I'm not sure if they all belong here or into their own plugin or something. The API reference is available here: https://styled-components.com/docs/api Also, not sure if there is a more generic way of handling all these cases at once, a rule that would read: "any template string descendant from 'styled'". Will attempt to open a PR and get some advice.
-rw-r--r--queries/ecma/injections.scm23
1 files changed, 23 insertions, 0 deletions
diff --git a/queries/ecma/injections.scm b/queries/ecma/injections.scm
index 52746ff9..f97f9cd2 100644
--- a/queries/ecma/injections.scm
+++ b/queries/ecma/injections.scm
@@ -18,6 +18,7 @@
arguments: ((template_string) @glimmer
(#offset! @glimmer 0 1 0 -1)))
+; styled.div`<css>`
(call_expression
function: (member_expression
object: (identifier) @_name
@@ -25,6 +26,7 @@
arguments: ((template_string) @css
(#offset! @css 0 1 0 -1)))
+; styled(Component)`<css>`
(call_expression
function: (call_expression
function: (identifier) @_name
@@ -32,4 +34,25 @@
arguments: ((template_string) @css
(#offset! @css 0 1 0 -1)))
+; styled.div.attrs({ prop: "foo" })`<css>`
+(call_expression
+ function: (call_expression
+ function: (member_expression
+ object: (member_expression
+ object: (identifier) @_name
+ (#eq? @_name "styled"))))
+ arguments: ((template_string) @css
+ (#offset! @css 0 1 0 -1)))
+
+
+; styled(Component).attrs({ prop: "foo" })`<css>`
+(call_expression
+ function: (call_expression
+ function: (member_expression
+ object: (call_expression
+ function: (identifier) @_name
+ (#eq? @_name "styled"))))
+ arguments: ((template_string) @css
+ (#offset! @css 0 1 0 -1)))
+
(regex_pattern) @regex