Skip to content

Commit ff9da59

Browse files
committed
Split handling of defaults for custom tags into helper functions
1 parent a35adee commit ff9da59

File tree

1 file changed

+22
-13
lines changed

1 file changed

+22
-13
lines changed

src/parse.rs

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1278,27 +1278,36 @@ impl<'t, 'l, 'py> Parser<'t, 'l, 'py> {
12781278
.try_iter()?
12791279
.map(|v| v?.getattr("cell_contents"))
12801280
.collect::<Result<Vec<_>, _>>()?;
1281+
1282+
fn get_defaults_count(defaults: &Bound<'_, PyAny>) -> Result<usize, PyErr> {
1283+
match defaults.is_none() {
1284+
true => Ok(0),
1285+
false => defaults.len(),
1286+
}
1287+
}
1288+
1289+
fn get_kwonly_defaults(
1290+
kwonly_defaults: &Bound<'_, PyAny>,
1291+
) -> Result<HashSet<String>, PyErr> {
1292+
match kwonly_defaults.is_none() {
1293+
true => Ok(HashSet::new()),
1294+
false => kwonly_defaults
1295+
.try_iter()?
1296+
.map(|item| item?.extract())
1297+
.collect::<Result<_, PyErr>>(),
1298+
}
1299+
}
1300+
12811301
if closure_names.contains(&"filename".to_string()) {
12821302
todo!("Inclusion tag")
12831303
} else if closure_names.contains(&"end_name".to_string()) {
12841304
todo!("Simple block tag")
12851305
} else {
1286-
let defaults = &closure_values[0];
1287-
let defaults_count = match defaults.is_none() {
1288-
true => 0,
1289-
false => defaults.len()?,
1290-
};
1306+
let defaults_count = get_defaults_count(&closure_values[0])?;
12911307
let func = closure_values[1].clone();
12921308
let function_name = closure_values[2].extract()?;
12931309
let kwonly = closure_values[3].extract()?;
1294-
let kwonly_defaults = &closure_values[4];
1295-
let kwonly_defaults = match kwonly_defaults.is_none() {
1296-
true => HashSet::new(),
1297-
false => kwonly_defaults
1298-
.try_iter()?
1299-
.map(|item| item?.extract())
1300-
.collect::<Result<_, PyErr>>()?,
1301-
};
1310+
let kwonly_defaults = get_kwonly_defaults(&closure_values[4])?;
13021311
let params: Vec<String> = closure_values[5].extract()?;
13031312
let takes_context = closure_values[6].is_truthy()?;
13041313
let varargs = !closure_values[7].is_none();

0 commit comments

Comments
 (0)