Skip to main content

rl_lang/interpreter/stdlib/path/
path_set_extension.rs

1use crate::{
2    interpreter::{evaluator::Evaluator, values::Value},
3    utils::{errors::Error, span::Span},
4};
5
6pub fn std_path_set_extension(
7    eval: &mut Evaluator,
8    path: Value,
9    target: String,
10    span: Span,
11) -> Result<Value, Error> {
12    match path {
13        Value::String(s) => {
14            let mut buf = std::path::PathBuf::from(&s);
15            buf.set_extension(&target);
16            Ok(Value::String(buf.to_string_lossy().to_string()))
17        }
18        other => Err(eval.err(
19            format!(
20                "path_set_extension() expects a string, got {}",
21                other.type_name()
22            ),
23            span,
24        )),
25    }
26}