Skip to content

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

pub struct TaskBase

Task 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

pub struct TaskBaseDocument

Parsed 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

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

pub struct TaskBaseView

One 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: String
  • pub 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

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

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

pub const MAX_TASK_BASE_BYTES: usize

Maximum YAML size accepted for one Task view file (#430).

Source: crates/calternal-notes-core/src/tasks/base.rs:12