pub struct Quill {
pub glue_template: String,
pub metadata: HashMap<String, Value>,
pub base_path: PathBuf,
pub name: String,
pub glue_file: String,
pub template_file: Option<String>,
pub template: Option<String>,
pub files: HashMap<PathBuf, FileEntry>,
}Expand description
A quill template bundle. See module docs for examples.
Fields§
§glue_template: StringThe template content
metadata: HashMap<String, Value>Quill-specific metadata
base_path: PathBufBase path for resolving relative paths
name: StringName of the quill
glue_file: StringGlue template file name
template_file: Option<String>Markdown template file name (optional)
template: Option<String>Markdown template content (optional)
files: HashMap<PathBuf, FileEntry>In-memory file system
Implementations§
Source§impl Quill
impl Quill
Sourcepub fn from_path<P: AsRef<Path>>(
path: P,
) -> Result<Self, Box<dyn StdError + Send + Sync>>
pub fn from_path<P: AsRef<Path>>( path: P, ) -> Result<Self, Box<dyn StdError + Send + Sync>>
Create a Quill from a directory path
Sourcepub fn from_tree(
files: HashMap<PathBuf, FileEntry>,
base_path: Option<PathBuf>,
default_name: Option<String>,
) -> Result<Self, Box<dyn StdError + Send + Sync>>
pub fn from_tree( files: HashMap<PathBuf, FileEntry>, base_path: Option<PathBuf>, default_name: Option<String>, ) -> Result<Self, Box<dyn StdError + Send + Sync>>
Create a Quill from a tree of files (authoritative method)
This is the authoritative method for creating a Quill from an in-memory file tree.
Both from_path and from_json use this method internally.
§Arguments
files- A map of file paths toFileEntryobjects representing the file treebase_path- Optional base path for the Quill (defaults to “/”)default_name- Optional default name (will be overridden by name in Quill.toml)
§Errors
Returns an error if:
- Quill.toml is not found in the file tree
- Quill.toml is not valid UTF-8 or TOML
- The glue file specified in Quill.toml is not found or not valid UTF-8
- Validation fails
Sourcepub fn from_json(
json_str: &str,
) -> Result<Self, Box<dyn StdError + Send + Sync>>
pub fn from_json( json_str: &str, ) -> Result<Self, Box<dyn StdError + Send + Sync>>
Create a Quill from a JSON representation
Parses a JSON string representing a Quill and creates a Quill instance. The JSON should have the following structure:
{
"name": "optional-default-name",
"base_path": "/optional/base/path",
"files": {
"Quill.toml": {
"contents": "...", // UTF-8 string or byte array
"is_dir": false
},
"glue.typ": {
"contents": "...",
"is_dir": false
}
}
}File contents can be either:
- A UTF-8 string (recommended for text files)
- An array of byte values (for binary files)
§Errors
Returns an error if:
- The JSON is malformed
- The “files” field is missing or not an object
- Any file contents are invalid
- Validation fails (via
from_tree)
Sourcepub fn toml_to_yaml_value(
toml_val: &Value,
) -> Result<Value, Box<dyn StdError + Send + Sync>>
pub fn toml_to_yaml_value( toml_val: &Value, ) -> Result<Value, Box<dyn StdError + Send + Sync>>
Convert TOML value to YAML value
Sourcepub fn assets_path(&self) -> PathBuf
pub fn assets_path(&self) -> PathBuf
Get the path to the assets directory
Sourcepub fn packages_path(&self) -> PathBuf
pub fn packages_path(&self) -> PathBuf
Get the path to the packages directory
Sourcepub fn typst_packages(&self) -> Vec<String>
pub fn typst_packages(&self) -> Vec<String>
Get the list of typst packages to download, if specified in Quill.toml
Sourcepub fn validate(&self) -> Result<(), Box<dyn StdError + Send + Sync>>
pub fn validate(&self) -> Result<(), Box<dyn StdError + Send + Sync>>
Validate the quill structure
Sourcepub fn get_file<P: AsRef<Path>>(&self, path: P) -> Option<&[u8]>
pub fn get_file<P: AsRef<Path>>(&self, path: P) -> Option<&[u8]>
Get file contents by path (relative to quill root)
Sourcepub fn get_file_entry<P: AsRef<Path>>(&self, path: P) -> Option<&FileEntry>
pub fn get_file_entry<P: AsRef<Path>>(&self, path: P) -> Option<&FileEntry>
Get file entry by path (includes metadata)
Sourcepub fn file_exists<P: AsRef<Path>>(&self, path: P) -> bool
pub fn file_exists<P: AsRef<Path>>(&self, path: P) -> bool
Check if a file exists in memory
Sourcepub fn list_directory<P: AsRef<Path>>(&self, dir_path: P) -> Vec<PathBuf>
pub fn list_directory<P: AsRef<Path>>(&self, dir_path: P) -> Vec<PathBuf>
List all files in a directory (returns paths relative to quill root)