summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2023-12-01 17:59:46 +0200
committerLars Wirzenius <liw@liw.fi>2023-12-25 10:17:07 +0200
commitd6ba90c694fe8905aadf02acbbb0ff7e24f30b4e (patch)
tree651be9d4399728e0b4174eca0b42eb613547d565 /src
parentb010f40593fb6ecafd7cc64f0ec6d78c3126603a (diff)
downloadsubplot-d6ba90c694fe8905aadf02acbbb0ff7e24f30b4e.tar.gz
refactor: move CSS file out of doc.rs
Make it easier to edit the CSS file, and also add some styles for upcoming scenario typesetting. Signed-off-by: Lars Wirzenius <liw@liw.fi> Sponsored-by: author
Diffstat (limited to 'src')
-rw-r--r--src/doc.rs15
-rw-r--r--src/error.rs4
2 files changed, 11 insertions, 8 deletions
diff --git a/src/doc.rs b/src/doc.rs
index 07831c2..397bb75 100644
--- a/src/doc.rs
+++ b/src/doc.rs
@@ -5,6 +5,7 @@ use crate::html::Attribute;
use crate::html::HtmlPage;
use crate::html::{Content, Element, ElementTag};
use crate::md::Markdown;
+use crate::resource;
use crate::EmbeddedFile;
use crate::EmbeddedFiles;
use crate::MatchedScenario;
@@ -25,6 +26,9 @@ use std::path::{Path, PathBuf};
use log::{error, trace};
+/// Name of standard Subplot CSS file.
+const CSS: &str = "subplot.css";
+
/// The set of known (special) classes which subplot will always recognise
/// as being valid.
static SPECIAL_CLASSES: &[&str] = &[
@@ -140,13 +144,8 @@ impl Document {
/// Return Document as an HTML page serialized into HTML text
pub fn to_html(&mut self, date: &str) -> Result<String, SubplotError> {
- const CSS: &str = r#"
- div.toc ol {
- list-style-type: none;
- padding: 0;
- padding-inline-start: 2ch;
- }
- "#;
+ let css_file = resource::read_as_string(CSS, None)
+ .map_err(|e| SubplotError::CssFileNotFound(CSS.into(), e))?;
let mut head = Element::new(crate::html::ElementTag::Head);
let mut title = Element::new(crate::html::ElementTag::Title);
@@ -154,7 +153,7 @@ impl Document {
head.push_child(crate::html::Content::Elt(title));
let mut css = Element::new(ElementTag::Style);
- css.push_child(Content::Text(CSS.into()));
+ css.push_child(Content::Text(css_file));
for css_file in self.meta.css_embed() {
css.push_child(Content::Text(css_file.into()));
}
diff --git a/src/error.rs b/src/error.rs
index 5c72879..7c63ca4 100644
--- a/src/error.rs
+++ b/src/error.rs
@@ -18,6 +18,10 @@ pub enum SubplotError {
#[error("Document has {0} warnings.")]
Warnings(usize),
+ /// Subplot could not find its CSS file.
+ #[error("failed to find CSS file: {0}")]
+ CssFileNotFound(PathBuf, #[source] std::io::Error),
+
/// Subplot could not find a file named as a bindings file.
#[error("binding file could not be found: {0}")]
BindingsFileNotFound(PathBuf, #[source] std::io::Error),