subplot/
embedded.rs

1use serde::{Deserialize, Serialize};
2
3/// A data file embedded in the document.
4#[derive(Debug, Eq, PartialEq, Clone, Serialize, Deserialize)]
5pub struct EmbeddedFile {
6    filename: String,
7    contents: String,
8}
9
10impl EmbeddedFile {
11    /// Create a new data file, with a name and contents.
12    pub fn new(filename: String, contents: String) -> EmbeddedFile {
13        EmbeddedFile { filename, contents }
14    }
15
16    /// Return name of embedded file.
17    pub fn filename(&self) -> &str {
18        &self.filename
19    }
20
21    /// Return contents of embedded file.
22    pub fn contents(&self) -> &str {
23        &self.contents
24    }
25}
26
27/// A collection of data files embedded in document.
28#[derive(Debug, Default, Eq, PartialEq, Clone, Serialize, Deserialize)]
29pub struct EmbeddedFiles {
30    files: Vec<EmbeddedFile>,
31}
32
33impl EmbeddedFiles {
34    /// Return slice of all data files.
35    pub fn files(&self) -> &[EmbeddedFile] {
36        &self.files
37    }
38
39    /// Append a new data file.
40    pub fn push(&mut self, file: EmbeddedFile) {
41        self.files.push(file);
42    }
43}