From fa016d50127be73dd8d7a677e2ba3d7696208adc Mon Sep 17 00:00:00 2001 From: sxyazi Date: Wed, 4 Sep 2024 10:56:12 +0800 Subject: [PATCH] feat: add `is_absolute`, `has_root`, `starts_with`, `ends_with`, `strip_prefix` to `Url` Userdata --- yazi-plugin/src/url/url.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/yazi-plugin/src/url/url.rs b/yazi-plugin/src/url/url.rs index 9fde4a55..d5eefac9 100644 --- a/yazi-plugin/src/url/url.rs +++ b/yazi-plugin/src/url/url.rs @@ -13,6 +13,8 @@ impl Url { reg.add_field_method_get("is_regular", |_, me| Ok(me.is_regular())); reg.add_field_method_get("is_search", |_, me| Ok(me.is_search())); reg.add_field_method_get("is_archive", |_, me| Ok(me.is_archive())); + reg.add_field_method_get("is_absolute", |_, me| Ok(me.is_absolute())); + reg.add_field_method_get("has_root", |_, me| Ok(me.has_root())); reg.add_method("name", |lua, me, ()| { me.file_name().map(|s| lua.create_string(s.as_encoded_bytes())).transpose() @@ -36,6 +38,11 @@ impl Url { reg.add_method("parent", |lua, me, ()| { me.parent_url().map(|u| Self::cast(lua, u)).transpose() }); + reg.add_method("starts_with", |_, me, base: UrlRef| Ok(me.starts_with(&*base))); + reg.add_method("ends_with", |_, me, child: UrlRef| Ok(me.ends_with(&*child))); + reg.add_method("strip_prefix", |lua, me, base: UrlRef| { + me.strip_prefix(&*base).map(|p| Self::cast(lua, yazi_shared::fs::Url::from(p))).transpose() + }); reg.add_meta_method(MetaMethod::Eq, |_, me, other: UrlRef| Ok(me == &*other)); reg.add_meta_method(MetaMethod::ToString, |lua, me, ()| {