Crate tpnote_lib
source ·Expand description
The tpnote-lib library is designed to embed Tp-Note’s core function in
common text editors and text editor plugins. It is dealing with templates
and input files and is also part of the command line application
Tp-Note. This library also
provides a default configuration in the static variable LIB_CFG that can
be customized at runtime. The defaults for the variables grouped in
LIB_CFG, are defined as constants in the module config (see Rustdoc).
While LIB_CFG is sourced only once at the start of Tp-Note, the
SETTINGS may be sourced more often. The latter contains configuration
data originating form environment variables.
Tp-Note’s high-level API, c.f. module workflow, abstracts most
implementation details. Roughly speaking, the input path correspond to
Tp-Note’s first positional command line parameter and the output path is
the same that is printed to stdout after usage. The main consumer of
tpnote-lib’s high-level API is the module workflow in the tp-note
crate.
Modules
- Set configuration defaults, reads and writes Tp-Note’s configuration file and exposes the configuration as the
staticvariableLIB_CFGbehind a mutex. This makes it possible to modify all configuration defaults (and templates) at runtime. - Self referencing data structures to store the note’s content as a raw string.
- Extends the built-in Tera filters.
- Custom error types.
- Helper functions dealing with filenames.
- Syntax highlighting for (inline) source code blocks in Markdown input.
- Helper functions dealing with HTML conversion.
- Helper functions dealing with markup languages.
- Configuration data that origins from environment variables. Unlike the configuration data in
LIB_CFGwhich is sourced only once when Tpublaunched, theSETTINGSobject may be sourced more often in order to follow changes in the related environment variables. - Abstractions for content templates and filename templates.
- Tp-Note’s high level API.
Macros
- Macro to construct a
NoteError::TeraTemplate from aTera::Error` .