aboutsummaryrefslogtreecommitdiffstats
path: root/src/reader.rs
diff options
context:
space:
mode:
authorLibravatar cel 🌸 <cel@bunny.garden>2025-04-03 03:09:35 +0100
committerLibravatar cel 🌸 <cel@bunny.garden>2025-04-03 03:09:35 +0100
commit9c561014f3c4278c0991290c898713f8e9c928e8 (patch)
tree92c60a88b34909387c854c483a3c3f4bc41c27b9 /src/reader.rs
parent2b399fb59d17bc127fbcd1533a3c079bc86770e1 (diff)
downloadpeanuts-9c561014f3c4278c0991290c898713f8e9c928e8.tar.gz
peanuts-9c561014f3c4278c0991290c898713f8e9c928e8.tar.bz2
peanuts-9c561014f3c4278c0991290c898713f8e9c928e8.zip
feat: xml logging
Diffstat (limited to 'src/reader.rs')
-rw-r--r--src/reader.rs26
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);
}