diff options
Diffstat (limited to 'src/embedded.rs')
-rw-r--r-- | src/embedded.rs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/embedded.rs b/src/embedded.rs new file mode 100644 index 0000000..e71fa54 --- /dev/null +++ b/src/embedded.rs @@ -0,0 +1,43 @@ +use serde::{Deserialize, Serialize}; + +/// A data file embedded in the document. +#[derive(Debug, Eq, PartialEq, Clone, Serialize, Deserialize)] +pub struct EmbeddedFile { + filename: String, + contents: String, +} + +impl EmbeddedFile { + /// Create a new data file, with a name and contents. + pub fn new(filename: String, contents: String) -> EmbeddedFile { + EmbeddedFile { filename, contents } + } + + /// Return name of embedded file. + pub fn filename(&self) -> &str { + &self.filename + } + + /// Return contents of embedded file. + pub fn contents(&self) -> &str { + &self.contents + } +} + +/// A collection of data files embedded in document. +#[derive(Debug, Default, Eq, PartialEq, Clone, Serialize, Deserialize)] +pub struct EmbeddedFiles { + files: Vec<EmbeddedFile>, +} + +impl EmbeddedFiles { + /// Return slice of all data files. + pub fn files(&self) -> &[EmbeddedFile] { + &self.files + } + + /// Append a new data file. + pub fn push(&mut self, file: EmbeddedFile) { + self.files.push(file); + } +} |