summaryrefslogtreecommitdiff
path: root/src/embedded.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/embedded.rs')
-rw-r--r--src/embedded.rs43
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);
+ }
+}