mod config;
mod formats;
mod ignore;
mod load;
mod query;
mod render;
mod schema_yaml;
mod tree;
mod types;
pub(crate) mod validation;
pub use config::{CoercionError, QuillConfig};
pub use ignore::QuillIgnore;
pub use tree::FileTreeNode;
pub use types::{
field_key, ui_key, CardSchema, FieldSchema, FieldType, UiContainerSchema, UiFieldSchema,
};
use std::collections::HashMap;
use std::sync::Arc;
use crate::value::QuillValue;
#[derive(Clone)]
pub struct Quill {
pub metadata: HashMap<String, QuillValue>,
pub name: String,
pub backend_id: String,
pub(crate) resolved_backend: Option<Arc<dyn crate::Backend>>,
pub plate: Option<String>,
pub example: Option<String>,
pub config: QuillConfig,
pub defaults: HashMap<String, QuillValue>,
pub examples: HashMap<String, Vec<QuillValue>>,
pub files: FileTreeNode,
}
impl std::fmt::Debug for Quill {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("Quill")
.field("name", &self.name)
.field("backend_id", &self.backend_id)
.field(
"resolved_backend",
&self.resolved_backend.as_ref().map(|b| b.id()),
)
.field(
"plate",
&self.plate.as_ref().map(|s| format!("<{} bytes>", s.len())),
)
.field("example", &self.example.is_some())
.field("files", &"<FileTreeNode>")
.finish()
}
}
#[cfg(test)]
mod tests;