use kimun_core::nfs::VaultPath;
use kimun_core::quote_query_term;
pub const VAR_NOTE: &str = "{note}";
pub fn query_has_variables(template: &str) -> bool {
template.contains(VAR_NOTE)
}
pub fn resolve_query(template: &str, current_note: Option<&VaultPath>) -> String {
let note_name = current_note
.map(|p| quote_query_term(&p.get_clean_name()))
.unwrap_or_default();
template.replace(VAR_NOTE, ¬e_name)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn detects_variables() {
assert!(query_has_variables("<{note}"));
assert!(query_has_variables("#todo <{note}"));
assert!(!query_has_variables("#todo"));
}
#[test]
fn resolves_note_variable() {
let p = VaultPath::note_path_from("work/spec.md");
assert_eq!(resolve_query("<{note}", Some(&p)), "<spec");
assert_eq!(resolve_query("#todo <{note}", Some(&p)), "#todo <spec");
}
#[test]
fn resolves_note_with_spaces_quoted() {
let p = VaultPath::note_path_from("work/my note.md");
assert_eq!(resolve_query("<{note}", Some(&p)), "<\"my note\"");
}
#[test]
fn resolves_to_empty_without_note() {
assert_eq!(resolve_query("<{note}", None), "<");
assert_eq!(resolve_query("#todo", None), "#todo");
}
}