rl_lang/interpreter/stdlib/path/
path_filename.rs1use crate::{
2 interpreter::{evaluator::Evaluator, values::Value},
3 utils::{errors::Error, span::Span},
4};
5
6pub fn std_path_filename(eval: &mut Evaluator, path: Value, span: Span) -> Result<Value, Error> {
7 match path {
8 Value::String(s) => Ok(Value::String(
9 std::path::Path::new(&s)
10 .file_name()
11 .ok_or_else(|| eval.err("file was not found".to_string(), span))?
12 .to_string_lossy()
13 .to_string(),
14 )),
15 other => Err(eval.err(
16 format!(
17 "path_filename() expects a string, got {}",
18 other.type_name()
19 ),
20 span,
21 )),
22 }
23}