This is more correct. And it will be more convenient shortly.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
let s = str::from_utf8(&buf).unwrap_or_else(
|e| str::from_utf8(&buf[0.. e.valid_up_to()]).unwrap());
- let size = svg_parse_size(s)?;
+ let size = svg_parse_size(HtmlStr::from_html_str(s))?;
Ok::<_,AE>(size)
})().context("looking for width/height attributes")?
SpE::InternalError(m.to_string())
})?;
+ let svg_data = Html::from_html_string(svg_data);
+
let _ = svg_parse_size(&svg_data).map_err(|error| SpE::SVGError {
error,
item_name: item_name.as_str().into(),
item_for_item: item_for.into(),
})?;
- Html::from_html_string(svg_data)
+ svg_data
}
#[throws(SpecError)]
}
#[throws(SVGSizeError)]
-pub fn svg_parse_size(xml: &str) -> PosC<f64> {
- let mut tokens = xmlparser::Tokenizer::from(xml)
+pub fn svg_parse_size(xml: &HtmlStr) -> PosC<f64> {
+ let mut tokens = xmlparser::Tokenizer::from(xml.as_html_str())
.map(|t| t.map_err(|e| SvSE::ParseError(e.to_string())))
.chain(iter::repeat_with(|| Err(SvSE::UnexpectedEOF)));