calternal_notes_core::tasks::base
Lossless reader and canonical writer for Task view definitions in Views/*.base.
DESIGN §40 keeps Task data in Notes. Issue #430 stores saved views as Obsidian Bases YAML in Views. The parser keeps the original bytes until a caller edits the model, so opening a hand-edited file never normalizes it.
Source: crates/calternal-notes-core/src/tasks/base.rs
Structs
Section titled “Structs”TaskBase
Section titled “TaskBase”pub struct TaskBaseTask filters and views stored in an Obsidian Bases file.
Filters, grouping, ordering and plugin view options stay as YAML values. This lets the app preserve Obsidian extensions that it does not interpret.
Fields
pub filters: Option<Value>pub views: Vec<TaskBaseView>pub extra: BTreeMap<String
Implements: Clone, Debug, Default, PartialEq, Serialize, Deserialize
Source: crates/calternal-notes-core/src/tasks/base.rs:40
TaskBaseDocument
Section titled “TaskBaseDocument”pub struct TaskBaseDocumentParsed Bases file. The original text is returned byte-for-byte until the typed model changes; an edit writes valid YAML and retains unknown fields.
Fields
pub base: TaskBase
Implements: Clone, Debug, PartialEq
TaskBaseDocument::to_yaml
Section titled “TaskBaseDocument::to_yaml”pub fn to_yaml(&self) -> Result<String, String>Return the untouched source or serialize the changed Bases model.
Source: crates/calternal-notes-core/src/tasks/base.rs:17
TaskBaseView
Section titled “TaskBaseView”pub struct TaskBaseViewOne saved Task view. The custom id field gives the view a stable deep link; Obsidian ignores fields it does not use and preserves the standard view keys.
Fields
pub view_type: String: Obsidian uses table; calternal adds kanban and matrix.pub name: Stringpub id: Option<String>pub filters: Option<Value>pub group_by: Option<Value>pub order: Option<Value>pub sort: Option<Value>pub extra: BTreeMap<String
Implements: Clone, Debug, PartialEq, Serialize, Deserialize
Source: crates/calternal-notes-core/src/tasks/base.rs:53
Functions
Section titled “Functions”parse_task_base
Section titled “parse_task_base”pub fn parse_task_base(text: &str) -> Result<TaskBaseDocument, String>Parse a Task Bases file without changing its source bytes.
The bounded input and view count keep malformed hand edits from consuming unbounded memory. Only the three Task view types from #430 are accepted.
Source: crates/calternal-notes-core/src/tasks/base.rs:76
serialize_task_base
Section titled “serialize_task_base”pub fn serialize_task_base(base: &TaskBase) -> Result<String, String>Write a changed Task Bases model as valid Obsidian-compatible YAML.
Source: crates/calternal-notes-core/src/tasks/base.rs:109
Constants
Section titled “Constants”MAX_TASK_BASE_BYTES
Section titled “MAX_TASK_BASE_BYTES”pub const MAX_TASK_BASE_BYTES: usizeMaximum YAML size accepted for one Task view file (#430).