From b59e41eaeecfa9c5827ee73e4343cd1c6442f0d5 Mon Sep 17 00:00:00 2001 From: YuKun Liu Date: Thu, 22 Sep 2022 17:01:38 -0700 Subject: [PATCH] fix: move `is_dir` & `is_file` to path --- src/plugin/interface/fs.rs | 8 -------- src/plugin/interface/path.rs | 22 +++++++++++++++++++++- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/plugin/interface/fs.rs b/src/plugin/interface/fs.rs index 562448637..8f9be6e0a 100644 --- a/src/plugin/interface/fs.rs +++ b/src/plugin/interface/fs.rs @@ -14,14 +14,6 @@ impl UserData for PluginFileSystem { let path = PathBuf::from(path); Ok(path.exists()) }); - methods.add_function("is_dir", |_, path: String| { - let path = PathBuf::from(path); - Ok(path.is_dir()) - }); - methods.add_function("is_file", |_, path: String| { - let path = PathBuf::from(path); - Ok(path.is_file()) - }); methods.add_function("create_dir", |_, args: (String, bool)| { let path = args.0; let recursive = args.1; diff --git a/src/plugin/interface/path.rs b/src/plugin/interface/path.rs index 66584cc52..a3d2da186 100644 --- a/src/plugin/interface/path.rs +++ b/src/plugin/interface/path.rs @@ -5,10 +5,30 @@ use mlua::UserData; pub struct PluginPath; impl UserData for PluginPath { fn add_methods<'lua, M: mlua::UserDataMethods<'lua, Self>>(methods: &mut M) { + // join function methods.add_function("join", |_, args: (String, String)| { let current_path = PathBuf::from(args.0); let new_path = current_path.join(args.1); Ok(new_path.to_str().unwrap().to_string()) }); + + // parent function + methods.add_function("parent", |_, path: String| { + let current_path = PathBuf::from(&path); + let parent = current_path.parent(); + if parent.is_none() { + return Ok(path); + } else { + return Ok(parent.unwrap().to_str().unwrap().to_string()); + } + }); + methods.add_function("is_dir", |_, path: String| { + let path = PathBuf::from(path); + Ok(path.is_dir()) + }); + methods.add_function("is_file", |_, path: String| { + let path = PathBuf::from(path); + Ok(path.is_file()) + }); } -} \ No newline at end of file +}