mirror of
https://github.com/lise-henry/crowbook
synced 2024-05-10 08:36:12 +02:00
Remove invalid XML1.0 characters
This commit is contained in:
parent
3de32a459d
commit
881ff412e3
|
@ -394,6 +394,7 @@ dependencies = [
|
|||
"crowbook-intl-runtime",
|
||||
"crowbook-text-processing",
|
||||
"epub-builder",
|
||||
"html-escape",
|
||||
"hyphenation",
|
||||
"indicatif",
|
||||
"lazy_static 1.4.0",
|
||||
|
@ -440,9 +441,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "crowbook-text-processing"
|
||||
version = "1.0.0"
|
||||
version = "1.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e0fe6b9d03ee72398cab2bd37c564bb898e351c4cff1f5f8a0db2bd9b909accc"
|
||||
checksum = "a749441fe0b30ba727c31367438f7e2f001e6ec23d3c5f417834f2fa17098a27"
|
||||
dependencies = [
|
||||
"lazy_static 1.4.0",
|
||||
"regex 1.9.1",
|
||||
|
|
|
@ -48,6 +48,7 @@ odt = []
|
|||
crowbook-intl = "0.2"
|
||||
|
||||
[dependencies]
|
||||
html-escape = "0.2"
|
||||
mime_guess = "2"
|
||||
comrak = "0.18"
|
||||
yaml-rust = "0.4"
|
||||
|
@ -56,7 +57,7 @@ uuid = { version = "1", features = ["v4"] }
|
|||
walkdir = "2"
|
||||
rustc-serialize = "0.3"
|
||||
rayon = "1.6"
|
||||
crowbook-text-processing = "1"
|
||||
crowbook-text-processing = "^1.1.1"
|
||||
lazy_static = "1"
|
||||
crowbook-intl-runtime = "0.1"
|
||||
numerals = "0.1"
|
||||
|
|
|
@ -28,6 +28,7 @@ use crate::templates::epub::*;
|
|||
use crate::templates::epub3;
|
||||
use crate::text_view::view_as_text;
|
||||
use crate::token::Token;
|
||||
use crate::misc;
|
||||
|
||||
use crowbook_text_processing::escape;
|
||||
use epub_builder::{
|
||||
|
@ -108,7 +109,7 @@ impl<'a> EpubRenderer<'a> {
|
|||
.map_err(|err| Error::render(Source::empty(), format!("{}", err)))?;
|
||||
maker.metadata(
|
||||
"author",
|
||||
escape::html(self.html.book.options.get_str("author").unwrap()),
|
||||
self.html.book.options.get_str("author").unwrap(),
|
||||
)
|
||||
.map_err(|err| Error::render(Source::empty(), format!("{}", err)))?;
|
||||
maker.metadata(
|
||||
|
@ -218,7 +219,7 @@ impl<'a> EpubRenderer<'a> {
|
|||
// todo: find cleaner way
|
||||
for element in &self.html.toc.elements {
|
||||
if element.url.contains(&filenamer(i)) {
|
||||
content = content.title(escape::html(raw_title));
|
||||
content = content.title(escape::html(&raw_title));
|
||||
content.toc.children = element.children.clone();
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright (C) 2016, 2017, 2018 Élisabeth HENRY.
|
||||
// Copyright (C) 2016-2023 Élisabeth HENRY.
|
||||
//
|
||||
// This file is part of Crowbook.
|
||||
//
|
||||
|
@ -28,6 +28,7 @@ use crate::syntax::Syntax;
|
|||
use crate::token::Data;
|
||||
use crate::token::Token;
|
||||
use crate::text_view;
|
||||
use crate::misc;
|
||||
|
||||
use std::borrow::Cow;
|
||||
use std::convert::{AsMut, AsRef};
|
||||
|
@ -439,7 +440,7 @@ impl<'a> HtmlRenderer<'a> {
|
|||
match *annotation {
|
||||
Data::GrammarError(ref s) => Ok(format!(
|
||||
"<span title = \"{}\" class = \"grammar-error\">{}</span>",
|
||||
escape::quotes(s.as_str()),
|
||||
html_escape::encode_double_quoted_attribute(s.as_str()),
|
||||
content
|
||||
)),
|
||||
Data::Repetition(ref colour) => {
|
||||
|
@ -463,7 +464,9 @@ impl<'a> HtmlRenderer<'a> {
|
|||
let mut content = if this.as_ref().verbatim {
|
||||
Cow::Borrowed(text.as_ref())
|
||||
} else {
|
||||
escape::html(this.as_ref().book.clean(text.as_str()))
|
||||
escape::html(this.as_ref()
|
||||
.book.clean(text.as_str())
|
||||
)
|
||||
};
|
||||
if this.as_ref().first_letter {
|
||||
this.as_mut().first_letter = false;
|
||||
|
@ -524,7 +527,7 @@ impl<'a> HtmlRenderer<'a> {
|
|||
.toc
|
||||
.add(TocElement::new(url, data.text.clone())
|
||||
.level(n)
|
||||
.raw_title(text_view::view_as_text(vec))
|
||||
.raw_title(escape::html(text_view::view_as_text(vec)))
|
||||
// TODO: should use proper text renderer
|
||||
);
|
||||
} else {
|
||||
|
@ -532,7 +535,7 @@ impl<'a> HtmlRenderer<'a> {
|
|||
.toc
|
||||
.add(TocElement::new(url, data.text.clone())
|
||||
.level(n - 1)
|
||||
.raw_title(text_view::view_as_text(vec))
|
||||
.raw_title(escape::html(text_view::view_as_text(vec)))
|
||||
// TODO: same
|
||||
);
|
||||
|
||||
|
@ -592,7 +595,7 @@ impl<'a> HtmlRenderer<'a> {
|
|||
Token::DescriptionTerm(ref v) => Ok(format!("<dt>{}</dt>\n", this.render_vec(v)?)),
|
||||
Token::DescriptionDetails(ref v) => Ok(format!("<dd>{}</dd>\n", this.render_vec(v)?)),
|
||||
Token::Link(ref url, ref title, ref vec) => {
|
||||
let url = escape::html(url.as_str());
|
||||
let url = html_escape::encode_double_quoted_attribute(url.as_str());
|
||||
let url = if ResourceHandler::is_local(&url) {
|
||||
Cow::Owned(this.as_ref().handler.get_link(&url).to_owned())
|
||||
} else {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright (C) 2016 Élisabeth HENRY.
|
||||
// Copyright (C) 2016-2023 Élisabeth HENRY.
|
||||
//
|
||||
// This file is part of Crowbook.
|
||||
//
|
||||
|
@ -58,3 +58,4 @@ pub fn insert_title(tokens: &mut Vec<Token>) {
|
|||
}
|
||||
tokens.insert(0, Token::Header(1, vec![]));
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue