Skip to main content

NotePath

Trait NotePath 

Source
pub trait NotePath {
    // Required methods
    fn disassemble(&self) -> (&str, &str, &str, Option<usize>, &str);
    fn exclude_copy_counter_eq(&self, p2: &Path) -> bool;
    fn has_tpnote_ext(&self) -> bool;
    fn has_wellformed_filename(&self) -> bool;
    fn find_last_created_file(&self) -> Option<String>;
    fn has_file_with_sort_tag(&self, sort_tag: &str) -> Option<String>;
    fn find_file_with_sort_tag(&self, sort_tag: &str) -> Option<PathBuf>;
}
Expand description

Extents Path with methods dealing with paths to Tp-Note files.

Required Methods§

Source

fn disassemble(&self) -> (&str, &str, &str, Option<usize>, &str)

Helper function that decomposes a fully qualified path name into (sort_tag, stem_copy_counter_ext, stem, copy_counter, ext). All sort-tag separators and copy-counter separators/brackets are removed.

Source

fn exclude_copy_counter_eq(&self, p2: &Path) -> bool

Compares with another Path to a Tp-Note file. They are considered equal even when the copy counter is different.

Source

fn has_tpnote_ext(&self) -> bool

Compare to all file extensions Tp-Note can open.

Source

fn has_wellformed_filename(&self) -> bool

Check if a Path points to a file with a “well-formed” filename.

Source

fn find_last_created_file(&self) -> Option<String>

Get the filename of the last created Tp-Note file in the directory self. If more files have the same creation date, choose the lexicographical last sort-tag in the current directory. Files without sort tag are ignored. https://doc.rust-lang.org/std/cmp/trait.Ord.html#lexicographical-comparison

Source

fn has_file_with_sort_tag(&self, sort_tag: &str) -> Option<String>

Checks if the directory in self has a Tp-Note file starting with the sort_tag. If found, return the filename, otherwise None

Source

fn find_file_with_sort_tag(&self, sort_tag: &str) -> Option<PathBuf>

A method that searches the directory in self for a Tp-Note file with the sort-tag sort_tag. It returns the filename.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl NotePath for Path

Source§

fn exclude_copy_counter_eq(&self, p2: &Path) -> bool

Check if 2 filenames are equal. Compare all parts, except the copy counter. Consider 2 file identical even when they have a different copy counter.

Source§

fn has_tpnote_ext(&self) -> bool

Returns True if the path in self ends with an extension, that Tp- Note considers as it’s own file. To do so the extension is compared to all items in the registered filename.extensions table in the configuration file.

Source§

fn has_wellformed_filename(&self) -> bool

Check if a path points to a file with a “well formed” filename. We consider it well formed,

  • if the filename is not empty, and
    • if the filename is a dot file (len >1 and without whitespace), or
    • if the filename has an extension.

A valid extension must not contain whitespace.

use std::path::Path;
use tpnote_lib::filename::NotePath;

let f = Path::new("tpnote.toml");
assert!(f.has_wellformed_filename());

let f = Path::new("dir/tpnote.toml");
assert!(f.has_wellformed_filename());

let f = Path::new("tpnote.to ml");
assert!(!f.has_wellformed_filename());
Source§

fn disassemble(&self) -> (&str, &str, &str, Option<usize>, &str)

Source§

fn find_last_created_file(&self) -> Option<String>

Source§

fn has_file_with_sort_tag(&self, sort_tag: &str) -> Option<String>

Source§

fn find_file_with_sort_tag(&self, sort_tag: &str) -> Option<PathBuf>

Implementors§