From 2717ec17dccb1a7fc00ad257345b3bcda53f7668 Mon Sep 17 00:00:00 2001 From: bokuweb Date: Tue, 13 Sep 2022 11:16:00 +0900 Subject: [PATCH] fix: level reader (#535) * fix: level reader * 21 * fix --- docx-core/src/reader/level_override.rs | 58 ++++++++++++++------------ docx-core/src/reader/numberings.rs | 8 ++-- docx-wasm/package.json | 2 +- 3 files changed, 38 insertions(+), 30 deletions(-) diff --git a/docx-core/src/reader/level_override.rs b/docx-core/src/reader/level_override.rs index 7d3e1c5..e0185b5 100644 --- a/docx-core/src/reader/level_override.rs +++ b/docx-core/src/reader/level_override.rs @@ -11,37 +11,43 @@ impl ElementReader for LevelOverride { r: &mut EventReader, attrs: &[OwnedAttribute], ) -> Result { - let mut o = LevelOverride::new(usize::from_str(&attrs[0].value)?); - loop { - let e = r.next(); - match e { - Ok(XmlEvent::StartElement { - attributes, name, .. - }) => { - let e = XMLElement::from_str(&name.local_name).unwrap(); - match e { - XMLElement::StartOverride => { - let val = usize::from_str(&attributes[0].value)?; - o = o.start(val); - continue; + if let Ok(level) = usize::from_str(&attrs[0].value) { + let mut o = LevelOverride::new(level); + loop { + let e = r.next(); + match e { + Ok(XmlEvent::StartElement { + attributes, name, .. + }) => { + let e = XMLElement::from_str(&name.local_name).unwrap(); + match e { + XMLElement::StartOverride => { + if let Ok(val) = usize::from_str(&attributes[0].value) { + o = o.start(val); + } + continue; + } + XMLElement::Level => { + if let Ok(lvl) = Level::read(r, &attributes) { + o = o.level(lvl); + } + continue; + } + _ => {} } - XMLElement::Level => { - let lvl = Level::read(r, &attributes)?; - o = o.level(lvl); - continue; + } + Ok(XmlEvent::EndElement { name, .. }) => { + let e = XMLElement::from_str(&name.local_name).unwrap(); + if e == XMLElement::LvlOverride { + return Ok(o); } - _ => {} } + Err(_) => return Err(ReaderError::XMLReadError), + _ => {} } - Ok(XmlEvent::EndElement { name, .. }) => { - let e = XMLElement::from_str(&name.local_name).unwrap(); - if e == XMLElement::LvlOverride { - return Ok(o); - } - } - Err(_) => return Err(ReaderError::XMLReadError), - _ => {} } + } else { + Err(ReaderError::XMLReadError) } } } diff --git a/docx-core/src/reader/numberings.rs b/docx-core/src/reader/numberings.rs index 6e58db4..ae5784f 100644 --- a/docx-core/src/reader/numberings.rs +++ b/docx-core/src/reader/numberings.rs @@ -84,9 +84,11 @@ impl FromXML for Numberings { abs_num_id = usize::from_str(&attributes[0].value)? } XMLElement::LvlOverride => { - let o = - LevelOverride::read(&mut parser, &attributes)?; - level_overrides.push(o); + if let Ok(o) = + LevelOverride::read(&mut parser, &attributes) + { + level_overrides.push(o); + } } _ => {} } diff --git a/docx-wasm/package.json b/docx-wasm/package.json index 221af1b..09f5468 100644 --- a/docx-wasm/package.json +++ b/docx-wasm/package.json @@ -1,6 +1,6 @@ { "name": "docx-wasm", - "version": "0.0.276-rc20", + "version": "0.0.276-rc23", "main": "dist/node/index.js", "browser": "dist/web/index.js", "author": "bokuweb ",