#obsidian #markdown #applications #text #ratatui #basalt-core

basalt-core

Provides the core functionality for Basalt TUI application

6 releases

new 0.4.2 May 2, 2025
0.4.1 Apr 20, 2025
0.2.2 Feb 27, 2025
0.1.0 Feb 1, 2025

#1011 in Text processing

Download history 58/week @ 2025-01-26 72/week @ 2025-02-02 114/week @ 2025-02-16 258/week @ 2025-02-23 53/week @ 2025-03-02 2/week @ 2025-03-09 148/week @ 2025-04-20 76/week @ 2025-04-27

224 downloads per month
Used in 2 crates

MIT license

43KB
686 lines

Basalt Core: basalt-core

This crate provides the core functionality for Basalt TUI application and interoperability layer to Obsidian vaults and notes.

Obsidian

Obsidian module provides functionality operating with Obsidian. It lets you read and manipulate Obsidian's configuration, vaults, and notes.

Currently supports reading vaults, notes, and writing to note path.

Example

use basalt_core::obsidian::{ObsidianConfig, Error, Vault};

let config = ObsidianConfig::from([
  ("Obsidian", Vault::default()),
  ("My Vault", Vault::default()),
]);

_ = config.get_vault_by_name("Obsidian");

Markdown

Markdown module provides a markdown parser that produces a custom AST using the pulldown_cmark::Parser. The "AST" acts as an intermediate layer. This enables segregation of the parsing logic into it's own module under basalt-core lib.

Example

use basalt_core::markdown::{from_str, Node, HeadingLevel, Text};

let markdown = "# My Heading\n\nSome text.";
let nodes = from_str(markdown);

assert_eq!(nodes, vec![
  Node::Heading {
    level: HeadingLevel::H1,
    text: Text::from("My Heading"),
  },
  Node::Paragraph {
    text: Text::from("Some text."),
  },
])

Dependencies

~3–14MB
~117K SLoC