diff --git a/packages/autofmt/src/buffer.rs b/packages/autofmt/src/buffer.rs new file mode 100644 index 000000000..dfd7166ba --- /dev/null +++ b/packages/autofmt/src/buffer.rs @@ -0,0 +1,17 @@ +use std::fmt::Result; + +struct Buffer { + buf: String, + cur_line: usize, + cur_indent: usize, +} + +impl Buffer { + fn write_tabs(&mut self, num: usize) -> Result { + todo!() + } + + fn new_line(&mut self) -> Result { + todo!() + } +} diff --git a/packages/autofmt/src/element.rs b/packages/autofmt/src/element.rs index 4af1d2460..4c4a00785 100644 --- a/packages/autofmt/src/element.rs +++ b/packages/autofmt/src/element.rs @@ -1,12 +1,18 @@ use crate::{util::*, write_ident}; use dioxus_rsx::*; -use std::{fmt, fmt::Write}; +use std::{fmt, fmt::Result, fmt::Write}; enum ShortOptimization { // Special because we want to print the closing bracket immediately Empty, + + // Special optimization to put everything on the same line Oneliner, + + // Optimization where children flow but props remain fixed on top PropsOnTop, + + // The noisiest optimization where everything flows NoOpt, } @@ -20,9 +26,8 @@ pub fn write_element( }: &Element, buf: &mut String, lines: &[&str], - node: &BodyNode, indent: usize, -) -> fmt::Result { +) -> Result { /* 1. Write the tag 2. Write the key @@ -157,7 +162,7 @@ fn write_attributes( attributes: &[ElementAttrNamed], sameline: bool, indent: usize, -) -> fmt::Result { +) -> Result { let mut attr_iter = attributes.iter().peekable(); while let Some(attr) = attr_iter.next() { @@ -178,7 +183,7 @@ fn write_attributes( Ok(()) } -fn write_attribute(buf: &mut String, attr: &ElementAttrNamed, indent: usize) -> fmt::Result { +fn write_attribute(buf: &mut String, attr: &ElementAttrNamed, indent: usize) -> Result { match &attr.attr { ElementAttr::AttrText { name, value } => { write!(buf, "{name}: \"{value}\"", value = value.value())?; diff --git a/packages/autofmt/src/ident.rs b/packages/autofmt/src/ident.rs index 19fd3cb8d..e4dee56c9 100644 --- a/packages/autofmt/src/ident.rs +++ b/packages/autofmt/src/ident.rs @@ -11,7 +11,7 @@ pub fn write_ident( indent: usize, ) -> fmt::Result { match node { - BodyNode::Element(el) => write_element(el, buf, lines, node, indent), + BodyNode::Element(el) => write_element(el, buf, lines, indent), BodyNode::Component(component) => write_component(component, buf, indent, lines), BodyNode::Text(text) => write_text(text, buf, indent), BodyNode::RawExpr(exp) => write_raw_expr(exp, indent, lines, buf), diff --git a/packages/autofmt/src/lib.rs b/packages/autofmt/src/lib.rs index c6fd2eeec..6d6c88819 100644 --- a/packages/autofmt/src/lib.rs +++ b/packages/autofmt/src/lib.rs @@ -5,6 +5,7 @@ use proc_macro2::TokenStream as TokenStream2; use quote::ToTokens; mod block; +mod buffer; mod children; mod component; mod element;