summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers+gitlab@digital-scurf.org>2021-02-17 08:22:05 +0000
committerDaniel Silverstone <dsilvers+gitlab@digital-scurf.org>2021-02-17 08:22:05 +0000
commit4b9edb354297353cbbe38575553ca1351f68d380 (patch)
treeac806e288bcef6288bc0f03d2216c635dfaead90
parent337c6dd6cd4075f8352e8729d1decc9c0002a845 (diff)
parent034140273c9c2c310c8231991819a9a5107ba27a (diff)
downloadsubplot-4b9edb354297353cbbe38575553ca1351f68d380.tar.gz
Merge branch 'examples2' into 'main'
refactor: make Style have methods for querying, setting fields See merge request larswirzenius/subplot!138
-rw-r--r--src/bin/sp-docgen.rs4
-rw-r--r--src/style.rs16
-rw-r--r--src/visitor/typesetting.rs2
3 files changed, 19 insertions, 3 deletions
diff --git a/src/bin/sp-docgen.rs b/src/bin/sp-docgen.rs
index 113defc..61522ce 100644
--- a/src/bin/sp-docgen.rs
+++ b/src/bin/sp-docgen.rs
@@ -38,7 +38,9 @@ fn main() -> Result<()> {
let first_file = &opt.filenames[0];
let mut style = Style::default();
- style.links_as_notes = opt.output.extension() == Some(&OsString::from("pdf"));
+ if opt.output.extension() == Some(&OsString::from("pdf")) {
+ style.typeset_links_as_notes();
+ }
let basedir = get_basedir_from(first_file)?;
let mut doc = Document::from_file(&basedir, &first_file, style)?;
diff --git a/src/style.rs b/src/style.rs
index de8adab..95f1109 100644
--- a/src/style.rs
+++ b/src/style.rs
@@ -4,10 +4,24 @@
/// syntax tree is modified during typesetting.
#[derive(Clone, Debug, Default)]
pub struct Style {
+ links_as_notes: bool,
+}
+
+impl Style {
/// Should hyperlinks in the document be rendered as footnotes or endnotes?
///
/// A link is like the HTML `<a>` element. The choice of footnote
/// versus endnote is made by the typesetting backend. HTML uses
/// endnotes, PDF uses footnotes.
- pub links_as_notes: bool,
+ pub fn links_as_notes(&self) -> bool {
+ self.links_as_notes
+ }
+
+ /// Make links be typeset as notes.
+ ///
+ /// Default is that they are typeset as links. This can't be
+ /// unset.
+ pub fn typeset_links_as_notes(&mut self) {
+ self.links_as_notes = true
+ }
}
diff --git a/src/visitor/typesetting.rs b/src/visitor/typesetting.rs
index f59f81d..e98d66a 100644
--- a/src/visitor/typesetting.rs
+++ b/src/visitor/typesetting.rs
@@ -64,7 +64,7 @@ impl<'a> MutVisitor for TypesettingVisitor<'a> {
fn visit_vec_inline(&mut self, vec_inline: &mut Vec<Inline>) {
for inline in vec_inline {
match inline {
- Inline::Link(attr, vec, target) if self.style.links_as_notes => {
+ Inline::Link(attr, vec, target) if self.style.links_as_notes() => {
*inline = typeset::link_as_note(attr.clone(), vec.to_vec(), target.clone());
}
_ => {