From 671159cb824c1adcf99b22bab365b99abd92928e Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sun, 29 Oct 2023 20:30:09 -0400 Subject: [PATCH] Does not work even without IntoAstNode. --- src/intermediate/ast_node.rs | 402 +++++++++++++++++------------------ src/intermediate/registry.rs | 8 +- 2 files changed, 206 insertions(+), 204 deletions(-) diff --git a/src/intermediate/ast_node.rs b/src/intermediate/ast_node.rs index 5e12864..afbc2ab 100644 --- a/src/intermediate/ast_node.rs +++ b/src/intermediate/ast_node.rs @@ -112,207 +112,207 @@ pub(crate) enum IAstNode { Timestamp(ITimestamp), } -pub(crate) trait IntoIAstNode<'parse> { - fn into_ast_node<'reg, 'orig, 'inp: 'reg + 'orig + 'parse>( - &'orig self, - registry: &'reg mut Registry<'orig, 'parse>, - ) -> BoxFuture<'inp, Result>; -} +// pub(crate) trait IntoIAstNode<'parse> { +// fn into_ast_node<'reg, 'orig, 'inp: 'reg + 'orig + 'parse>( +// &'orig self, +// registry: &'reg mut Registry<'orig, 'parse>, +// ) -> BoxFuture<'inp, Result>; +// } -impl<'parse> IntoIAstNode<'parse> for organic::types::DocumentElement<'parse> { - fn into_ast_node<'reg, 'orig, 'inp: 'reg + 'orig + 'parse>( - &'orig self, - registry: &'reg mut Registry<'orig, 'parse>, - ) -> BoxFuture<'inp, Result> { - async move { - match self { - organic::types::DocumentElement::Heading(inner) => { - Ok(IAstNode::Heading(IHeading::new(registry, inner).await?)) - } - organic::types::DocumentElement::Section(inner) => { - Ok(IAstNode::Section(ISection::new(registry, inner).await?)) - } - } - } - .boxed() - } -} +// impl<'parse> IntoIAstNode<'parse> for organic::types::DocumentElement<'parse> { +// fn into_ast_node<'reg, 'orig, 'inp: 'reg + 'orig + 'parse>( +// &'orig self, +// registry: &'reg mut Registry<'orig, 'parse>, +// ) -> BoxFuture<'inp, Result> { +// async move { +// match self { +// organic::types::DocumentElement::Heading(inner) => { +// Ok(IAstNode::Heading(IHeading::new(registry, inner).await?)) +// } +// organic::types::DocumentElement::Section(inner) => { +// Ok(IAstNode::Section(ISection::new(registry, inner).await?)) +// } +// } +// } +// .boxed() +// } +// } -impl<'parse> IntoIAstNode<'parse> for organic::types::Element<'parse> { - fn into_ast_node<'reg, 'orig, 'inp: 'reg + 'orig + 'parse>( - &'orig self, - registry: &'reg mut Registry<'orig, 'parse>, - ) -> BoxFuture<'inp, Result> { - async move { - match self { - organic::types::Element::Paragraph(inner) => { - Ok(IAstNode::Paragraph(IParagraph::new(registry, inner).await?)) - } - organic::types::Element::PlainList(inner) => { - Ok(IAstNode::PlainList(IPlainList::new(registry, inner).await?)) - } - organic::types::Element::CenterBlock(inner) => Ok(IAstNode::CenterBlock( - ICenterBlock::new(registry, inner).await?, - )), - organic::types::Element::QuoteBlock(inner) => Ok(IAstNode::QuoteBlock( - IQuoteBlock::new(registry, inner).await?, - )), - organic::types::Element::SpecialBlock(inner) => Ok(IAstNode::SpecialBlock( - ISpecialBlock::new(registry, inner).await?, - )), - organic::types::Element::DynamicBlock(inner) => Ok(IAstNode::DynamicBlock( - IDynamicBlock::new(registry, inner).await?, - )), - organic::types::Element::FootnoteDefinition(inner) => Ok( - IAstNode::FootnoteDefinition(IFootnoteDefinition::new(registry, inner).await?), - ), - organic::types::Element::Comment(inner) => { - Ok(IAstNode::Comment(IComment::new(registry, inner).await?)) - } - organic::types::Element::Drawer(inner) => { - Ok(IAstNode::Drawer(IDrawer::new(registry, inner).await?)) - } - organic::types::Element::PropertyDrawer(inner) => Ok(IAstNode::PropertyDrawer( - IPropertyDrawer::new(registry, inner).await?, - )), - organic::types::Element::Table(inner) => { - Ok(IAstNode::Table(ITable::new(registry, inner).await?)) - } - organic::types::Element::VerseBlock(inner) => Ok(IAstNode::VerseBlock( - IVerseBlock::new(registry, inner).await?, - )), - organic::types::Element::CommentBlock(inner) => Ok(IAstNode::CommentBlock( - ICommentBlock::new(registry, inner).await?, - )), - organic::types::Element::ExampleBlock(inner) => Ok(IAstNode::ExampleBlock( - IExampleBlock::new(registry, inner).await?, - )), - organic::types::Element::ExportBlock(inner) => Ok(IAstNode::ExportBlock( - IExportBlock::new(registry, inner).await?, - )), - organic::types::Element::SrcBlock(inner) => { - Ok(IAstNode::SrcBlock(ISrcBlock::new(registry, inner).await?)) - } - organic::types::Element::Clock(inner) => { - Ok(IAstNode::Clock(IClock::new(registry, inner).await?)) - } - organic::types::Element::DiarySexp(inner) => { - Ok(IAstNode::DiarySexp(IDiarySexp::new(registry, inner).await?)) - } - organic::types::Element::Planning(inner) => { - Ok(IAstNode::Planning(IPlanning::new(registry, inner).await?)) - } - organic::types::Element::FixedWidthArea(inner) => Ok(IAstNode::FixedWidthArea( - IFixedWidthArea::new(registry, inner).await?, - )), - organic::types::Element::HorizontalRule(inner) => Ok(IAstNode::HorizontalRule( - IHorizontalRule::new(registry, inner).await?, - )), - organic::types::Element::Keyword(inner) => { - Ok(IAstNode::Keyword(IKeyword::new(registry, inner).await?)) - } - organic::types::Element::BabelCall(inner) => { - Ok(IAstNode::BabelCall(IBabelCall::new(registry, inner).await?)) - } - organic::types::Element::LatexEnvironment(inner) => Ok(IAstNode::LatexEnvironment( - ILatexEnvironment::new(registry, inner).await?, - )), - } - } - .boxed() - } -} +// impl<'parse> IntoIAstNode<'parse> for organic::types::Element<'parse> { +// fn into_ast_node<'reg, 'orig, 'inp: 'reg + 'orig + 'parse>( +// &'orig self, +// registry: &'reg mut Registry<'orig, 'parse>, +// ) -> BoxFuture<'inp, Result> { +// async move { +// match self { +// organic::types::Element::Paragraph(inner) => { +// Ok(IAstNode::Paragraph(IParagraph::new(registry, inner).await?)) +// } +// organic::types::Element::PlainList(inner) => { +// Ok(IAstNode::PlainList(IPlainList::new(registry, inner).await?)) +// } +// organic::types::Element::CenterBlock(inner) => Ok(IAstNode::CenterBlock( +// ICenterBlock::new(registry, inner).await?, +// )), +// organic::types::Element::QuoteBlock(inner) => Ok(IAstNode::QuoteBlock( +// IQuoteBlock::new(registry, inner).await?, +// )), +// organic::types::Element::SpecialBlock(inner) => Ok(IAstNode::SpecialBlock( +// ISpecialBlock::new(registry, inner).await?, +// )), +// organic::types::Element::DynamicBlock(inner) => Ok(IAstNode::DynamicBlock( +// IDynamicBlock::new(registry, inner).await?, +// )), +// organic::types::Element::FootnoteDefinition(inner) => Ok( +// IAstNode::FootnoteDefinition(IFootnoteDefinition::new(registry, inner).await?), +// ), +// organic::types::Element::Comment(inner) => { +// Ok(IAstNode::Comment(IComment::new(registry, inner).await?)) +// } +// organic::types::Element::Drawer(inner) => { +// Ok(IAstNode::Drawer(IDrawer::new(registry, inner).await?)) +// } +// organic::types::Element::PropertyDrawer(inner) => Ok(IAstNode::PropertyDrawer( +// IPropertyDrawer::new(registry, inner).await?, +// )), +// organic::types::Element::Table(inner) => { +// Ok(IAstNode::Table(ITable::new(registry, inner).await?)) +// } +// organic::types::Element::VerseBlock(inner) => Ok(IAstNode::VerseBlock( +// IVerseBlock::new(registry, inner).await?, +// )), +// organic::types::Element::CommentBlock(inner) => Ok(IAstNode::CommentBlock( +// ICommentBlock::new(registry, inner).await?, +// )), +// organic::types::Element::ExampleBlock(inner) => Ok(IAstNode::ExampleBlock( +// IExampleBlock::new(registry, inner).await?, +// )), +// organic::types::Element::ExportBlock(inner) => Ok(IAstNode::ExportBlock( +// IExportBlock::new(registry, inner).await?, +// )), +// organic::types::Element::SrcBlock(inner) => { +// Ok(IAstNode::SrcBlock(ISrcBlock::new(registry, inner).await?)) +// } +// organic::types::Element::Clock(inner) => { +// Ok(IAstNode::Clock(IClock::new(registry, inner).await?)) +// } +// organic::types::Element::DiarySexp(inner) => { +// Ok(IAstNode::DiarySexp(IDiarySexp::new(registry, inner).await?)) +// } +// organic::types::Element::Planning(inner) => { +// Ok(IAstNode::Planning(IPlanning::new(registry, inner).await?)) +// } +// organic::types::Element::FixedWidthArea(inner) => Ok(IAstNode::FixedWidthArea( +// IFixedWidthArea::new(registry, inner).await?, +// )), +// organic::types::Element::HorizontalRule(inner) => Ok(IAstNode::HorizontalRule( +// IHorizontalRule::new(registry, inner).await?, +// )), +// organic::types::Element::Keyword(inner) => { +// Ok(IAstNode::Keyword(IKeyword::new(registry, inner).await?)) +// } +// organic::types::Element::BabelCall(inner) => { +// Ok(IAstNode::BabelCall(IBabelCall::new(registry, inner).await?)) +// } +// organic::types::Element::LatexEnvironment(inner) => Ok(IAstNode::LatexEnvironment( +// ILatexEnvironment::new(registry, inner).await?, +// )), +// } +// } +// .boxed() +// } +// } -impl<'parse> IntoIAstNode<'parse> for organic::types::Object<'parse> { - fn into_ast_node<'reg, 'orig, 'inp: 'reg + 'orig + 'parse>( - &'orig self, - registry: &'reg mut Registry<'orig, 'parse>, - ) -> BoxFuture<'inp, Result> { - async move { - match self { - organic::types::Object::Bold(inner) => { - Ok(IAstNode::Bold(IBold::new(registry, inner).await?)) - } - organic::types::Object::Italic(inner) => { - Ok(IAstNode::Italic(IItalic::new(registry, inner).await?)) - } - organic::types::Object::Underline(inner) => { - Ok(IAstNode::Underline(IUnderline::new(registry, inner).await?)) - } - organic::types::Object::StrikeThrough(inner) => Ok(IAstNode::StrikeThrough( - IStrikeThrough::new(registry, inner).await?, - )), - organic::types::Object::Code(inner) => { - Ok(IAstNode::Code(ICode::new(registry, inner).await?)) - } - organic::types::Object::Verbatim(inner) => { - Ok(IAstNode::Verbatim(IVerbatim::new(registry, inner).await?)) - } - organic::types::Object::PlainText(inner) => { - Ok(IAstNode::PlainText(IPlainText::new(registry, inner).await?)) - } - organic::types::Object::RegularLink(inner) => Ok(IAstNode::RegularLink( - IRegularLink::new(registry, inner).await?, - )), - organic::types::Object::RadioLink(inner) => { - Ok(IAstNode::RadioLink(IRadioLink::new(registry, inner).await?)) - } - organic::types::Object::RadioTarget(inner) => Ok(IAstNode::RadioTarget( - IRadioTarget::new(registry, inner).await?, - )), - organic::types::Object::PlainLink(inner) => { - Ok(IAstNode::PlainLink(IPlainLink::new(registry, inner).await?)) - } - organic::types::Object::AngleLink(inner) => { - Ok(IAstNode::AngleLink(IAngleLink::new(registry, inner).await?)) - } - organic::types::Object::OrgMacro(inner) => { - Ok(IAstNode::OrgMacro(IOrgMacro::new(registry, inner).await?)) - } - organic::types::Object::Entity(inner) => { - Ok(IAstNode::Entity(IEntity::new(registry, inner).await?)) - } - organic::types::Object::LatexFragment(inner) => Ok(IAstNode::LatexFragment( - ILatexFragment::new(registry, inner).await?, - )), - organic::types::Object::ExportSnippet(inner) => Ok(IAstNode::ExportSnippet( - IExportSnippet::new(registry, inner).await?, - )), - organic::types::Object::FootnoteReference(inner) => Ok( - IAstNode::FootnoteReference(IFootnoteReference::new(registry, inner).await?), - ), - organic::types::Object::Citation(inner) => { - Ok(IAstNode::Citation(ICitation::new(registry, inner).await?)) - } - organic::types::Object::CitationReference(inner) => Ok( - IAstNode::CitationReference(ICitationReference::new(registry, inner).await?), - ), - organic::types::Object::InlineBabelCall(inner) => Ok(IAstNode::InlineBabelCall( - IInlineBabelCall::new(registry, inner).await?, - )), - organic::types::Object::InlineSourceBlock(inner) => Ok( - IAstNode::InlineSourceBlock(IInlineSourceBlock::new(registry, inner).await?), - ), - organic::types::Object::LineBreak(inner) => { - Ok(IAstNode::LineBreak(ILineBreak::new(registry, inner).await?)) - } - organic::types::Object::Target(inner) => { - Ok(IAstNode::Target(ITarget::new(registry, inner).await?)) - } - organic::types::Object::StatisticsCookie(inner) => Ok(IAstNode::StatisticsCookie( - IStatisticsCookie::new(registry, inner).await?, - )), - organic::types::Object::Subscript(inner) => { - Ok(IAstNode::Subscript(ISubscript::new(registry, inner).await?)) - } - organic::types::Object::Superscript(inner) => Ok(IAstNode::Superscript( - ISuperscript::new(registry, inner).await?, - )), - organic::types::Object::Timestamp(inner) => { - Ok(IAstNode::Timestamp(ITimestamp::new(registry, inner).await?)) - } - } - } - .boxed() - } -} +// impl<'parse> IntoIAstNode<'parse> for organic::types::Object<'parse> { +// fn into_ast_node<'reg, 'orig, 'inp: 'reg + 'orig + 'parse>( +// &'orig self, +// registry: &'reg mut Registry<'orig, 'parse>, +// ) -> BoxFuture<'inp, Result> { +// async move { +// match self { +// organic::types::Object::Bold(inner) => { +// Ok(IAstNode::Bold(IBold::new(registry, inner).await?)) +// } +// organic::types::Object::Italic(inner) => { +// Ok(IAstNode::Italic(IItalic::new(registry, inner).await?)) +// } +// organic::types::Object::Underline(inner) => { +// Ok(IAstNode::Underline(IUnderline::new(registry, inner).await?)) +// } +// organic::types::Object::StrikeThrough(inner) => Ok(IAstNode::StrikeThrough( +// IStrikeThrough::new(registry, inner).await?, +// )), +// organic::types::Object::Code(inner) => { +// Ok(IAstNode::Code(ICode::new(registry, inner).await?)) +// } +// organic::types::Object::Verbatim(inner) => { +// Ok(IAstNode::Verbatim(IVerbatim::new(registry, inner).await?)) +// } +// organic::types::Object::PlainText(inner) => { +// Ok(IAstNode::PlainText(IPlainText::new(registry, inner).await?)) +// } +// organic::types::Object::RegularLink(inner) => Ok(IAstNode::RegularLink( +// IRegularLink::new(registry, inner).await?, +// )), +// organic::types::Object::RadioLink(inner) => { +// Ok(IAstNode::RadioLink(IRadioLink::new(registry, inner).await?)) +// } +// organic::types::Object::RadioTarget(inner) => Ok(IAstNode::RadioTarget( +// IRadioTarget::new(registry, inner).await?, +// )), +// organic::types::Object::PlainLink(inner) => { +// Ok(IAstNode::PlainLink(IPlainLink::new(registry, inner).await?)) +// } +// organic::types::Object::AngleLink(inner) => { +// Ok(IAstNode::AngleLink(IAngleLink::new(registry, inner).await?)) +// } +// organic::types::Object::OrgMacro(inner) => { +// Ok(IAstNode::OrgMacro(IOrgMacro::new(registry, inner).await?)) +// } +// organic::types::Object::Entity(inner) => { +// Ok(IAstNode::Entity(IEntity::new(registry, inner).await?)) +// } +// organic::types::Object::LatexFragment(inner) => Ok(IAstNode::LatexFragment( +// ILatexFragment::new(registry, inner).await?, +// )), +// organic::types::Object::ExportSnippet(inner) => Ok(IAstNode::ExportSnippet( +// IExportSnippet::new(registry, inner).await?, +// )), +// organic::types::Object::FootnoteReference(inner) => Ok( +// IAstNode::FootnoteReference(IFootnoteReference::new(registry, inner).await?), +// ), +// organic::types::Object::Citation(inner) => { +// Ok(IAstNode::Citation(ICitation::new(registry, inner).await?)) +// } +// organic::types::Object::CitationReference(inner) => Ok( +// IAstNode::CitationReference(ICitationReference::new(registry, inner).await?), +// ), +// organic::types::Object::InlineBabelCall(inner) => Ok(IAstNode::InlineBabelCall( +// IInlineBabelCall::new(registry, inner).await?, +// )), +// organic::types::Object::InlineSourceBlock(inner) => Ok( +// IAstNode::InlineSourceBlock(IInlineSourceBlock::new(registry, inner).await?), +// ), +// organic::types::Object::LineBreak(inner) => { +// Ok(IAstNode::LineBreak(ILineBreak::new(registry, inner).await?)) +// } +// organic::types::Object::Target(inner) => { +// Ok(IAstNode::Target(ITarget::new(registry, inner).await?)) +// } +// organic::types::Object::StatisticsCookie(inner) => Ok(IAstNode::StatisticsCookie( +// IStatisticsCookie::new(registry, inner).await?, +// )), +// organic::types::Object::Subscript(inner) => { +// Ok(IAstNode::Subscript(ISubscript::new(registry, inner).await?)) +// } +// organic::types::Object::Superscript(inner) => Ok(IAstNode::Superscript( +// ISuperscript::new(registry, inner).await?, +// )), +// organic::types::Object::Timestamp(inner) => { +// Ok(IAstNode::Timestamp(ITimestamp::new(registry, inner).await?)) +// } +// } +// } +// .boxed() +// } +// } diff --git a/src/intermediate/registry.rs b/src/intermediate/registry.rs index 256a5a6..0a7861d 100644 --- a/src/intermediate/registry.rs +++ b/src/intermediate/registry.rs @@ -1,7 +1,7 @@ use std::collections::HashMap; use std::marker::PhantomData; -use super::ast_node::IntoIAstNode; +// use super::ast_node::IntoIAstNode; use crate::error::CustomError; use organic::types::Element; use organic::types::Object; @@ -102,7 +102,8 @@ async fn convert_reference_contents<'reg, 'orig, 'parse>( let contents = { let mut ret = Vec::new(); for obj in contents.iter() { - ret.push(obj.into_ast_node(registry).await?); + // TODO + // ret.push(obj.into_ast_node(registry).await?); } ret }; @@ -117,7 +118,8 @@ async fn convert_definition_contents<'reg, 'orig, 'parse>( let contents = { let mut ret = Vec::new(); for obj in contents.iter() { - ret.push(obj.into_ast_node(registry).await?); + // TODO + // ret.push(obj.into_ast_node(registry).await?); } ret };