Skip to content

Commit e533feb

Browse files
committed
Add pattern matchign support for python
1 parent 48d5cfa commit e533feb

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

src/languages/python.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,10 @@ const nodeMatchers: Partial<
7676
statement: STATEMENT_TYPES,
7777
string: "string",
7878
collectionItem: matcher(importNodeFinder(), argumentSelectionExtractor()),
79-
collectionKey: trailingMatcher(["pair[key]"], [":"]),
79+
collectionKey: cascadingMatcher(
80+
trailingMatcher(["pair[key]"], [":"]),
81+
patternMatcher("match_statement[alternative][pattern]")
82+
),
8083
ifStatement: "if_statement",
8184
anonymousFunction: "lambda?.lambda",
8285
functionCall: "call",
@@ -86,7 +89,10 @@ const nodeMatchers: Partial<
8689
className: "class_definition[name]",
8790
namedFunction: "decorated_definition?.function_definition",
8891
functionName: "function_definition[name]",
89-
condition: conditionMatcher("*[condition]"),
92+
condition: cascadingMatcher(
93+
conditionMatcher("*[condition]"),
94+
patternMatcher("match_statement[alternative][pattern]")
95+
),
9096
type: leadingMatcher(
9197
["function_definition[return_type]", "*[type]"],
9298
[":", "->"]
@@ -97,6 +103,7 @@ const nodeMatchers: Partial<
97103
"typed_parameter.identifier!",
98104
"parameters.identifier!",
99105
"*[name]",
106+
"match_statement[alternative][pattern]",
100107
],
101108
value: cascadingMatcher(
102109
leadingMatcher(
@@ -118,12 +125,15 @@ const nodeMatchers: Partial<
118125
">>=",
119126
]
120127
),
121-
patternMatcher("return_statement.~return!")
128+
patternMatcher("return_statement.~return!"),
129+
patternMatcher("match_statement[alternative][consequence]")
122130
),
123131
argumentOrParameter: cascadingMatcher(
124132
argumentMatcher("parameters", "argument_list"),
125133
matcher(patternFinder("call.generator_expression!"), childRangeSelector())
126134
),
135+
subject: "match_statement[subject]",
136+
branch: "match_statement[alternative]",
127137
};
128138

129139
export default createPatternMatchers(nodeMatchers);

0 commit comments

Comments
 (0)