mirror of
https://github.com/lise-henry/crowbook
synced 2024-05-13 11:36:12 +02:00
Add support for task list items
This commit is contained in:
parent
b5c77b5510
commit
6e6c58ef49
|
@ -78,6 +78,7 @@ impl<'a> EpubRenderer<'a> {
|
|||
let wrapper = if zip.test().is_ok() {
|
||||
ZipCommandOrLibrary::Command(zip)
|
||||
} else {
|
||||
warn!("{}", lformat!("Could not run zip command, falling back to zip library"));
|
||||
ZipCommandOrLibrary::Library(ZipLibrary::new()?)
|
||||
};
|
||||
let mut maker = EpubBuilder::new(wrapper)?;
|
||||
|
|
|
@ -495,6 +495,10 @@ impl<'a> HtmlRenderer<'a> {
|
|||
}
|
||||
Ok(this.as_mut().render_title_full(n, data)?)
|
||||
}
|
||||
Token::TaskItem(checked, ref vec) =>
|
||||
Ok(format!("<input type = \"checkbox\" disabled = \"\" {}/>{}",
|
||||
if checked { "checked = \"\"" } else { "" },
|
||||
this.render_vec(vec)?)),
|
||||
Token::Emphasis(ref vec) => Ok(format!("<em>{}</em>", this.render_vec(vec)?)),
|
||||
Token::Strong(ref vec) => Ok(format!("<b>{}</b>", this.render_vec(vec)?)),
|
||||
Token::Strikethrough(ref vec) => Ok(format!("<del>{}</del>", this.render_vec(vec)?)),
|
||||
|
|
|
@ -216,6 +216,7 @@ impl<'a> LatexRenderer<'a> {
|
|||
.insert_str("papersize", self.book.options.get_str("tex.paper.size").unwrap())
|
||||
.insert_bool("stdpage", self.book.options.get_bool("tex.stdpage").unwrap())
|
||||
.insert_bool("use_url", self.book.features.url)
|
||||
.insert_bool("use_taskitem", self.book.features.taskitem)
|
||||
.insert_bool("use_tables", self.book.features.table)
|
||||
.insert_bool("use_codeblocks", self.book.features.codeblock)
|
||||
.insert_bool("use_images", self.book.features.image)
|
||||
|
@ -366,6 +367,10 @@ impl<'a> Renderer for LatexRenderer<'a> {
|
|||
content.push_str("}\n");
|
||||
Ok(content)
|
||||
}
|
||||
Token::TaskItem(checked, ref vec) =>
|
||||
Ok(format!("[{}] {}",
|
||||
if checked { r"$\boxtimes$" } else { r"$\square$" },
|
||||
self.render_vec(vec)?)),
|
||||
Token::Emphasis(ref vec) => Ok(format!("\\emph{{{}}}", self.render_vec(vec)?)),
|
||||
Token::Strong(ref vec) => Ok(format!("\\mdstrong{{{}}}", self.render_vec(vec)?)),
|
||||
Token::Strikethrough(ref vec) => Ok(format!("\\sout{{{}}}", self.render_vec(vec)?)),
|
||||
|
|
|
@ -229,7 +229,8 @@ impl<'a> OdtRenderer<'a> {
|
|||
Token::DescriptionItem(ref v) |
|
||||
Token::DescriptionTerm(ref v) |
|
||||
Token::DescriptionDetails(ref v) |
|
||||
Token::Strikethrough(ref v) => {
|
||||
Token::Strikethrough(ref v) |
|
||||
Token::TaskItem(_, ref v) => {
|
||||
warn!("{}", lformat!("ODT: Description list and strikethrough not handled in this output"));
|
||||
self.render_vec(v)
|
||||
}
|
||||
|
|
|
@ -45,6 +45,7 @@ pub struct Features {
|
|||
pub subscript: bool,
|
||||
pub superscript: bool,
|
||||
pub strikethrough: bool,
|
||||
pub taskitem: bool,
|
||||
}
|
||||
|
||||
impl Features {
|
||||
|
@ -61,6 +62,7 @@ impl Features {
|
|||
subscript: false,
|
||||
superscript: false,
|
||||
strikethrough: false,
|
||||
taskitem: false,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -80,6 +82,7 @@ impl BitOr for Features {
|
|||
subscript: self.subscript | rhs.subscript,
|
||||
superscript: self.superscript | rhs.superscript,
|
||||
strikethrough: self.strikethrough | rhs.strikethrough,
|
||||
taskitem: self.taskitem | rhs.taskitem,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -316,6 +319,10 @@ impl Parser {
|
|||
NodeValue::SoftBreak => vec![Token::SoftBreak],
|
||||
NodeValue::LineBreak => vec![Token::HardBreak],
|
||||
NodeValue::Emph => vec![Token::Emphasis(inner)],
|
||||
NodeValue::TaskItem(checked) => {
|
||||
self.features.taskitem = true;
|
||||
vec![Token::TaskItem(checked, inner)]
|
||||
},
|
||||
NodeValue::Strong => vec![Token::Strong(inner)],
|
||||
NodeValue::Strikethrough => {
|
||||
self.features.strikethrough = true;
|
||||
|
|
|
@ -58,6 +58,9 @@ pub enum Token {
|
|||
/// Subscript, indicated with ~...~
|
||||
Subscript(Vec<Token>),
|
||||
|
||||
/// TaskItem. `bool` indicates wheteh it is checked.
|
||||
TaskItem(bool, Vec<Token>),
|
||||
|
||||
/// Unordered list, with a vector of `Item`s
|
||||
List(Vec<Token>),
|
||||
/// Ordered list, with a starting number, and a list of `Item`s
|
||||
|
@ -142,6 +145,7 @@ impl Token {
|
|||
Image(_, _, ref v) |
|
||||
StandaloneImage(_, _, ref v) |
|
||||
Strikethrough(ref v) |
|
||||
TaskItem(_, ref v) |
|
||||
Annotation(_, ref v) => Some(v),
|
||||
|
||||
__NonExhaustive => unreachable!(),
|
||||
|
@ -177,6 +181,7 @@ impl Token {
|
|||
Link(_, _, ref mut v) |
|
||||
Image(_, _, ref mut v) |
|
||||
Strikethrough(ref mut v) |
|
||||
TaskItem(_, ref mut v) |
|
||||
StandaloneImage(_, _, ref mut v) => Some(v),
|
||||
|
||||
__NonExhaustive => unreachable!(),
|
||||
|
|
|
@ -33,6 +33,9 @@
|
|||
% Only included if strikethrough is used in the document
|
||||
\usepackage[normalem]{ulem}
|
||||
<</use_strikethrough>>
|
||||
<<#use_taskitem>>
|
||||
\usepackage{amssymb}
|
||||
<</use_taskitem>>
|
||||
<<#use_url>>
|
||||
% Only included if URLs are used in the document
|
||||
\usepackage[colorlinks=true,breaklinks=true,hypertexnames=false]{hyperref}
|
||||
|
|
Loading…
Reference in New Issue