diff options
| author | Pg Biel <9021226+PgBiel@users.noreply.github.com> | 2023-05-29 15:15:32 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-29 20:15:32 +0200 |
| commit | e4557f66399daa848ce1b7cf6cd74b3dd03e74e5 (patch) | |
| tree | 91c5cac79fa445460362cd0f7a0bfdd60e2cd1ea /src/eval/methods.rs | |
| parent | 31dfe32242ef7ab8304874fd0260d27649880df8 (diff) | |
Fix `.at(default: ...)` for strings and content (#1339)
Diffstat (limited to 'src/eval/methods.rs')
| -rw-r--r-- | src/eval/methods.rs | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/eval/methods.rs b/src/eval/methods.rs index 42084543..7de3bc20 100644 --- a/src/eval/methods.rs +++ b/src/eval/methods.rs @@ -31,7 +31,11 @@ pub fn call( "len" => Value::Int(string.len()), "first" => Value::Str(string.first().at(span)?), "last" => Value::Str(string.last().at(span)?), - "at" => Value::Str(string.at(args.expect("index")?, None).at(span)?), + "at" => { + let index = args.expect("index")?; + let default = args.named::<EcoString>("default")?; + Value::Str(string.at(index, default.as_deref()).at(span)?) + } "slice" => { let start = args.expect("start")?; let mut end = args.eat()?; @@ -74,7 +78,9 @@ pub fn call( Value::Content(content) => match method { "func" => content.func().into(), "has" => Value::Bool(content.has(&args.expect::<EcoString>("field")?)), - "at" => content.at(&args.expect::<EcoString>("field")?, None).at(span)?, + "at" => content + .at(&args.expect::<EcoString>("field")?, args.named("default")?) + .at(span)?, "location" => content .location() .ok_or("this method can only be called on content returned by query(..)") |
