From 04331ca359165e579223be38b0b84d2ba7070712 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E7=8E=AE=20=28Jade=20Lin=29?= Date: Wed, 7 Aug 2024 20:30:14 +0800 Subject: [PATCH 1/3] Fix BearQL parsing error --- src/db/search.rs | 1 + src/utils/search.rs | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/src/db/search.rs b/src/db/search.rs index 5959b4a..3348c09 100644 --- a/src/db/search.rs +++ b/src/db/search.rs @@ -319,6 +319,7 @@ pub(crate) mod test { ("./langs/rust//", Path("./langs/rust//".into())), ("//", Path("//".into())), (".//", Path(".//".into())), + ("/blog/", Path("/blog/".into())), ( "rust | langs go", Or( diff --git a/src/utils/search.rs b/src/utils/search.rs index 7f664c0..bafe0e9 100644 --- a/src/utils/search.rs +++ b/src/utils/search.rs @@ -40,6 +40,8 @@ pub enum Path<'a> { pub enum RelativePath<'a> { #[parse("{0}/{1}")] Join(Keyword<'a>, &'a Self), + #[parse("{0}/")] + NameEndSlash(Keyword<'a>), #[parse("{0}")] Name(Keyword<'a>), #[parse("/")] // for tailing "/", "//" ... syntax @@ -145,6 +147,11 @@ fn _path_to_str_parts<'a>(p: Path<'a>, parts: &mut Vec<&'a str>) { parts.push(item.into()); false } + RelativePath::NameEndSlash(item) => { + parts.push(item.into()); + parts.push(""); + false + } RelativePath::ExtraSlash() => { parts.push(""); parts.push(""); @@ -187,6 +194,7 @@ mod test { r#"title | #rust #langs"#, r#"title ( #rust #langs )"#, r#"title ( #rust | #langs )"#, + r#"/blog/"#, ] { let rv = parse_query(&src, &out_arena, &err_arena); info!(?rv, ?src, "parsed"); From f491fd4bc8caa9376ec6317056d2e7b36c8d876d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E7=8E=AE=20=28Jade=20Lin=29?= Date: Wed, 7 Aug 2024 20:30:55 +0800 Subject: [PATCH 2/3] Coverage report excludes test codes --- src/lib.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lib.rs b/src/lib.rs index adf5322..4467577 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -10,6 +10,7 @@ pub mod db; pub mod utils; #[cfg(test)] +#[cfg(not(tarpaulin_include))] #[ctor::ctor] fn init() { crate::utils::logging::setup_console_log(); From c0a1d7c4fd378c7f6597615c77c002710a48a928 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E7=8E=AE=20=28Jade=20Lin=29?= Date: Wed, 7 Aug 2024 20:39:58 +0800 Subject: [PATCH 3/3] Normalize paths before searching --- src/db/search.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/db/search.rs b/src/db/search.rs index 3348c09..e11b51c 100644 --- a/src/db/search.rs +++ b/src/db/search.rs @@ -43,7 +43,7 @@ type BookmarkFilter = Box< fn join_folder_path(cwd: &str, p: &str) -> String { const PATH_SEP: char = '/'; if p.starts_with(PATH_SEP) { - p.to_string() + p.trim_end_matches(PATH_SEP).to_string() } else { cwd.trim_end_matches(PATH_SEP) .split(PATH_SEP)