feat: add more kinds of export task (#1152)

This commit is contained in:
Myriad-Dreamin 2025-01-11 18:09:15 +08:00 committed by GitHub
parent da16d14d2d
commit 6fa10f63fc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 45 additions and 1 deletions

View file

@ -35,6 +35,11 @@ pub enum TaskWhen {
OnSave,
/// Run task on type.
OnType,
/// [DEPRECATED] Run task when a document has a title and on saved, which is
/// useful to filter out template files.
///
/// Note: this is deprecating.
OnDocumentHasTitle,
}
impl TaskWhen {

View file

@ -365,6 +365,12 @@ pub enum ProjectTask {
ExportPng(ExportPngTask),
/// An export SVG task.
ExportSvg(ExportSvgTask),
/// An export HTML task.
ExportHtml(ExportHtmlTask),
/// An export Markdown task.
ExportMarkdown(ExportMarkdownTask),
/// An export Text task.
ExportText(ExportTextTask),
// todo: compatibility
// An export task of another type.
// Other(serde_json::Value),
@ -378,6 +384,9 @@ impl ProjectTask {
ProjectTask::ExportPdf(task) => &task.export.document,
ProjectTask::ExportPng(task) => &task.export.document,
ProjectTask::ExportSvg(task) => &task.export.document,
ProjectTask::ExportHtml(task) => &task.export.document,
ProjectTask::ExportMarkdown(task) => &task.export.document,
ProjectTask::ExportText(task) => &task.export.document,
// ProjectTask::Other(_) => return None,
}
}
@ -389,6 +398,9 @@ impl ProjectTask {
ProjectTask::ExportPdf(task) => &task.export.id,
ProjectTask::ExportPng(task) => &task.export.id,
ProjectTask::ExportSvg(task) => &task.export.id,
ProjectTask::ExportHtml(task) => &task.export.id,
ProjectTask::ExportMarkdown(task) => &task.export.id,
ProjectTask::ExportText(task) => &task.export.id,
// ProjectTask::Other(_) => return None,
}
}
@ -452,7 +464,7 @@ pub struct ExportPngTask {
pub ppi: f32,
}
/// An export png task specifier.
/// An export svg task specifier.
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "kebab-case")]
pub struct ExportSvgTask {
@ -461,6 +473,33 @@ pub struct ExportSvgTask {
pub export: ExportTask,
}
/// An export html task specifier.
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "kebab-case")]
pub struct ExportHtmlTask {
/// The shared export arguments
#[serde(flatten)]
pub export: ExportTask,
}
/// An export markdown task specifier.
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "kebab-case")]
pub struct ExportMarkdownTask {
/// The shared export arguments
#[serde(flatten)]
pub export: ExportTask,
}
/// An export text task specifier.
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "kebab-case")]
pub struct ExportTextTask {
/// The shared export arguments
#[serde(flatten)]
pub export: ExportTask,
}
/// A project route specifier.
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "kebab-case")]