Skip to main content

rl_lang/interpreter/stdlib/path/
path_join.rs

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