From c8ed16a2d1d1f1b5278936eeadeae87da7cb104e Mon Sep 17 00:00:00 2001 From: cel 🌸 Date: Tue, 19 Nov 2024 14:52:14 +0000 Subject: store only namespace name in qualified name, not namespace declaration --- src/writer.rs | 43 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 35 insertions(+), 8 deletions(-) (limited to 'src/writer.rs') diff --git a/src/writer.rs b/src/writer.rs index 08be8c2..249ced5 100644 --- a/src/writer.rs +++ b/src/writer.rs @@ -1,26 +1,53 @@ -use futures::{AsyncWrite, Sink}; +use std::collections::HashSet; + +use futures::Sink; +use tokio::io::AsyncWrite; use crate::{ - element::{Element, Name, Namespace}, + element::{Element, Name, NamespaceDeclaration}, error::Error, + xml::{self, composers::Composer, parsers_complete::Parser, ETag}, }; // pub struct Writer { pub struct Writer { - writer: W, + inner: W, depth: Vec, - namespaces: Vec<(usize, Namespace)>, + namespaces: Vec>, } -impl Writer { - pub async fn write(&self, element: impl Into) -> Result<(), Error> { +impl Writer { + pub async fn write(&mut self, element: Element) -> Result<(), Error> { todo!() } - pub async fn write_start(&self, element: impl Into) -> Result<(), Error> { + + pub async fn write_start(&mut self, element: Element) -> Result<(), Error> { todo!() } - pub async fn write_end(&self) -> Result<(), Error> { + + pub async fn write_end(&mut self) -> Result<(), Error> { todo!() + // let e_tag; + // if let Some(name) = self.depth.pop() { + // if let Some(prefix) = name.namespace.prefix { + // e_tag = xml::ETag { + // name: xml::QName::PrefixedName(xml::PrefixedName { + // prefix: xml::Prefix::parse_full(&prefix)?, + // local_part: xml::LocalPart::parse_full(&name.name)?, + // }), + // }; + // e_tag.write(&mut self.inner).await?; + // Ok(()) + // } else { + // e_tag = xml::ETag { + // name: xml::QName::UnprefixedName(xml::UnprefixedName::parse_full(&name.name)?), + // }; + // e_tag.write(&mut self.inner).await?; + // Ok(()) + // } + // } else { + // return Err(Error::NotInElement("".to_string())); + // } } } -- cgit