Read font (#396)

* feat: Read font

* fix: snaps

* fix: snaps

* fix: snaps

* fix
main
bokuweb 2022-01-06 16:50:43 +09:00 committed by GitHub
parent c0ad3e2b9a
commit c50db721b9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
36 changed files with 568 additions and 126 deletions

View File

@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## docx-wasm@0.0.219 (6. January, 2022)
- [Internal]Support runFonts reader.
## docx-wasm@0.0.218 (6. January, 2022)
- Support minimum ToC API for JS (see https://github.com/bokuweb/docx-rs/pull/394).

View File

@ -13,9 +13,13 @@ use crate::xml_builder::*;
*/
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub struct RunFonts {
#[serde(skip_serializing_if = "Option::is_none")]
ascii: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
hi_ansi: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
east_asia: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
cs: Option<String>,
}
@ -100,9 +104,6 @@ mod tests {
fn test_run_fonts_cs_build() {
let c = RunFonts::new().cs("Arial");
let b = c.build();
assert_eq!(
str::from_utf8(&b).unwrap(),
r#"<w:rFonts w:cs="Arial" />"#
);
assert_eq!(str::from_utf8(&b).unwrap(), r#"<w:rFonts w:cs="Arial" />"#);
}
}

View File

@ -8,6 +8,29 @@ use crate::VertAlignType;
use super::*;
fn read_run_fonts(attributes: &[OwnedAttribute]) -> Result<RunFonts, ReaderError> {
let mut f = RunFonts::new();
for a in attributes {
let local_name = &a.name.local_name;
match local_name.as_str() {
"asciiTheme" => {
f = f.ascii(&a.value);
}
"eastAsiaTheme" => {
f = f.east_asia(&a.value);
}
"hAnsiTheme" => {
f = f.hi_ansi(&a.value);
}
"cstheme" => {
f = f.cs(&a.value);
}
_ => {}
}
}
Ok(f)
}
impl ElementReader for RunProperty {
fn read<R: Read>(
r: &mut EventReader<R>,
@ -50,8 +73,11 @@ impl ElementReader for RunProperty {
rp = rp.spacing(v)
}
}
// TODO: Implement later
XMLElement::RunFonts => {}
XMLElement::RunFonts => {
if let Ok(f) = read_run_fonts(&attributes) {
rp = rp.fonts(f);
}
}
XMLElement::Underline => rp = rp.underline(&attributes[0].value.clone()),
XMLElement::Italic => {
if !read_bool(&attributes) {

View File

@ -24,8 +24,9 @@ impl FromXML for Styles {
continue;
}
XMLElement::DocDefaults => {
let d = DocDefaults::read(&mut parser, &attributes)?;
styles = styles.doc_defaults(d);
if let Ok(d) = DocDefaults::read(&mut parser, &attributes) {
styles = styles.doc_defaults(d);
}
continue;
}
_ => {}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
{
"name": "docx-wasm",
"version": "0.0.218",
"version": "0.0.219",
"main": "dist/node/index.js",
"browser": "dist/web/index.js",
"author": "bokuweb <bokuweb12@gmail.com>",

File diff suppressed because it is too large Load Diff