#language #parse #tooling #macro #text #html #manipulate

vimwiki

Library that provides support to parse, generate, and manipulate vimwiki language

6 releases

0.1.0 Jun 6, 2021
0.1.0-alpha.5 Nov 7, 2020
0.1.0-alpha.3 Oct 22, 2020
0.1.0-alpha.1 Sep 14, 2020

#675 in Template engine


Used in 3 crates

MIT/Apache

650KB
16K SLoC

vimwiki

This crate represents the language definition and parsing support for the vimwiki language. This has been broken out to be a shareable crate for others to build on top of the vimwiki language and write their own tooling.

Does not support Windows as of yet! See issue #89.

Usage

Add this to your Cargo.toml:

[dependencies]
vimwiki = "0.1"

Examples

use vimwiki::{Language, elements::*};

// Load some language as a string
let language = Language::from_vimwiki_str(r#"
= My Header =
///
Some paragraph with *decorations* and [[links]] that you would normally
see in a vimwiki file.
"#);

// Parse the input as a page using vimwiki format
let page: Page = language.parse().unwrap();

Features

By default, no features are enable, but the following are offered:

  • html: If specified, builds in support to convert vimwiki elements to html.
  • macros: If specified, pulls in vimwiki_macros to expose top-level macro functions to parse and produce vimwiki elements at compile-time.
  • timekeeper: If specified, all parser logic runs through a statically-allocated HashMap that logs the time taken to parse various elements and can print out results in a human-readable format. This is predominately useful for performance optimizations internally.

License

This project is licensed under either of

Apache License, Version 2.0, (LICENSE-APACHE or apache-license) MIT license (LICENSE-MIT or mit-license) at your option.

Dependencies

~5–14MB
~177K SLoC