rl_lang/interpreter/stdlib/path/
path_set_extension.rs1use 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}