diff options
Diffstat (limited to 'src/reader.rs')
-rw-r--r-- | src/reader.rs | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/src/reader.rs b/src/reader.rs index 824446a..9eb7c91 100644 --- a/src/reader.rs +++ b/src/reader.rs @@ -5,7 +5,7 @@ use std::{ str, }; use tokio::io::{AsyncRead, AsyncReadExt}; -use tracing::debug; +use tracing::{debug, info, trace}; use crate::{ declaration::{Declaration, VersionInfo}, @@ -70,10 +70,17 @@ where loop { let input = str::from_utf8(self.buffer.data())?; match xml::Prolog::parse(input) { - Ok((rest, (decl, _misc, _doctype_decl))) => { + Ok(( + rest, + xml::Prolog { + xml_decl, + miscs: _, + doctype_decl: _, + }, + )) => { let len = self.buffer.available_data() - rest.as_bytes().len(); // TODO: return error if there is a doctype decl - if let Some(decl) = decl { + if let Some(decl) = xml_decl { let declaration = Declaration { version_info: match *decl.version_info { xml::VersionNum::One => VersionInfo::One, @@ -84,9 +91,13 @@ where .map(|encoding_decl| (**encoding_decl).to_string()), sd_decl: decl.sd_decl.map(|sd_decl| *sd_decl), }; + let element_plain = &input[..len]; + info!("read prolog: {}", element_plain); self.buffer.consume(len); return Ok(Some(declaration)); } else { + let element_plain = &input[..len]; + info!("read prolog: {}", element_plain); self.buffer.consume(len); return Ok(None); } @@ -105,12 +116,13 @@ where pub async fn read_start<'s, T: FromElement>(&'s mut self) -> Result<T> { let element = self.read_start_tag().await?; + trace!("read element start: {:?}", element); Ok(FromElement::from_element(element)?) } pub async fn read<'s, T: FromElement>(&'s mut self) -> Result<T> { let element = self.read_element().await?; - debug!("read element: {:?}", element); + trace!("read element: {:?}", element); Ok(FromElement::from_element(element)?) } @@ -128,6 +140,8 @@ where &mut self.namespace_declarations, e, )?; + let element_plain = &input[..len]; + info!("read element start: {}", element_plain); self.buffer.consume(len); return Ok(element); } @@ -160,6 +174,8 @@ where if self.depth.is_empty() { self.root_ended = true } + let element_plain = &input[..len]; + info!("read element end: {}", element_plain); self.buffer.consume(len); return Ok(()); } @@ -189,6 +205,8 @@ where if self.depth.is_empty() { self.root_ended = true } + let element_plain = &input[..len]; + info!("read element: {}", element_plain); self.buffer.consume(len); return Ok(element); } |