Ver Fonte

wip: eliminate warnings

Jonathan Kelley há 3 anos atrás
pai
commit
1e4af430a8

+ 0 - 64
packages/autofmt/src/block.rs

@@ -1,64 +0,0 @@
-use crate::{util::*, FormattedBlock};
-use dioxus_rsx::*;
-use std::fmt::Write;
-use triple_accel::{levenshtein_search, Match};
-
-#[test]
-fn format_block_basic() {
-    let block = r#"
-        let a = 120;
-
-        rsx! {
-            div {
-                h1 { "thing" }
-                h1 { "thing" }
-                h1 { "thing" }
-                h1 { "thing" "is whack" "but you're wacker" }
-                h1 { "thing" div {"special cases?"     } }
-                div {
-                    a: 123,
-                    b: 456,
-                    c: 789,
-                    d: "hello",
-                }
-                div {
-                    a: 123,
-                    b: 456,
-                    c: 789,
-                    d: "hello",
-                    p {}
-                    c {}
-                }
-
-                h3 { class: "asdasd", "asdasd" }
-                h3 { class: "mx-large bg-gray-900 tall-md-400", div {
-                    "classy"
-                }}
-
-
-                // Some comments explaining my genius
-                div {
-                    "comment compression"
-                }
-
-                // Some comments explaining my genius
-                div {
-                    // Some comments explaining my genius
-                    a: 123,
-
-                    // comment compression
-                    b: 456,
-
-                    // comments on attributes
-                    c: 789,
-                }
-            }
-        }
-    "#;
-
-    // div { class: "asdasd", p { "hello!" } }
-
-    // let edits = get_format_blocks(block);
-
-    // println!("{}", edits[0].formatted);
-}

+ 4 - 87
packages/autofmt/src/buffer.rs

@@ -59,6 +59,10 @@ impl Buffer {
         write!(self.buf, "\"{}\"", text.value())
     }
 
+    pub fn consume(self) -> Option<String> {
+        Some(self.buf)
+    }
+
     // Push out the indent level and write each component, line by line
     pub fn write_body_indented(&mut self, children: &[BodyNode]) -> Result {
         self.indent += 1;
@@ -100,94 +104,7 @@ impl Buffer {
             self.write_ident(child)?;
         }
 
-        // let mut children_iter = children.iter().enumerate().peekable();
-
-        // while let Some((id, child)) = children_iter.next() {
-        //     let mut written_empty = false;
-
-        //     for line in lines[self.line..child.span().start().line - 1].iter() {
-        //         if id == 0 && line.trim().is_empty() {
-        //             continue;
-        //         }
-
-        //         if !written_empty && line.is_empty() {
-        //             writeln!(self.buf)?;
-        //             written_empty = true;
-        //             continue;
-        //         }
-
-        //         if written_empty && line.is_empty() {
-        //             continue;
-        //         }
-
-        //         writeln!(self.buf)?;
-        //         // self.write_tabs(indent + 1)?;
-        //         write!(self.buf, "{}", line.trim())?;
-        //     }
-
-        //     writeln!(self.buf)?;
-        //     self.indented_tab()?;
-        //     self.write_ident(lines, child)?;
-
-        //     self.line = child.span().end().line;
-        // }
-
-        // for child in children {
-        //     // Exprs handle their own indenting/line breaks
-        //     if !matches!(child, BodyNode::RawExpr(_)) {
-        //         self.tabbed_line()?;
-        //     }
-
-        //     self.write_ident(lines, child)?;
-        // }
         self.indent -= 1;
         Ok(())
     }
 }
-
-// ShortOptimization::PropsOnTop => {
-//     write!(self.buf, " ")?;
-//     self.write_attributes(attributes, true, indent)?;
-
-//     if !children.is_empty() && !attributes.is_empty() {
-//         write!(self.buf, ",")?;
-//     }
-
-//     if let Some(last_attr) = attributes.last() {
-//         self.cur_line = last_attr.name_span().end().line + 1;
-//     }
-
-//     // write the children
-//     for (id, child) in children.iter().enumerate() {
-//         let mut written_empty = false;
-//         for line in self.lines[self.cur_line..child.span().start().line - 1].iter() {
-//             if id == 0 && line.trim().is_empty() {
-//                 continue;
-//             }
-
-//             if !written_empty && line.is_empty() {
-//                 writeln!(self.buf)?;
-//                 written_empty = true;
-//                 continue;
-//             }
-
-//             if written_empty && line.is_empty() {
-//                 continue;
-//             }
-
-//             writeln!(self.buf)?;
-//             // self.write_tabs(indent + 1)?;
-//             write!(self.buf, "{}", line.trim())?;
-//         }
-
-//         writeln!(self.buf)?;
-//         self.write_tabs(indent + 1)?;
-//         self.write_ident(child, indent + 1)?;
-
-//         self.cur_line = child.span().end().line;
-//     }
-
-//     writeln!(self.buf)?;
-//     self.write_tabs(indent)?;
-//     write!(self.buf, "}}")?;
-// }

+ 0 - 4
packages/autofmt/src/children.rs

@@ -1,4 +0,0 @@
-// write the body of a component or element
-pub fn write_children() {
-
-}

+ 1 - 1
packages/autofmt/src/component.rs

@@ -1,7 +1,7 @@
 use crate::Buffer;
 use dioxus_rsx::*;
 use quote::ToTokens;
-use std::fmt::{self, Result, Write};
+use std::fmt::{Result, Write};
 
 impl Buffer {
     pub fn write_component(

+ 4 - 28
packages/autofmt/src/element.rs

@@ -69,7 +69,7 @@ impl Buffer {
         }
 
         match opt_level {
-            ShortOptimization::Empty => write!(self.buf, "}}")?,
+            ShortOptimization::Empty => {}
             ShortOptimization::Oneliner => {
                 write!(self.buf, " ")?;
                 self.write_attributes(attributes, true)?;
@@ -78,12 +78,11 @@ impl Buffer {
                     write!(self.buf, ", ")?;
                 }
 
-                // write the children
                 for child in children {
                     self.write_ident(child)?;
                 }
 
-                write!(self.buf, " }}")?;
+                write!(self.buf, " ")?;
             }
 
             ShortOptimization::PropsOnTop => {
@@ -94,26 +93,19 @@ impl Buffer {
                     write!(self.buf, ",")?;
                 }
 
-                // write the children
                 self.write_body_indented(children)?;
-
                 self.tabbed_line()?;
-                write!(self.buf, "}}")?;
             }
 
             ShortOptimization::NoOpt => {
-                // write the key
-
-                // write the attributes
                 self.write_attributes(attributes, false)?;
-
                 self.write_body_indented(children)?;
-
                 self.tabbed_line()?;
-                write!(self.buf, "}}")?;
             }
         }
 
+        write!(self.buf, "}}")?;
+
         Ok(())
     }
 
@@ -226,19 +218,3 @@ fn is_short_attrs(attrs: &[ElementAttrNamed]) -> bool {
     let total_attr_len = extract_attr_len(attrs);
     total_attr_len < 80
 }
-
-fn write_key() {
-    // if let Some(key) = key.as_ref().map(|f| f.value()) {
-    //     if is_long_attr_list {
-    //         self.new_line()?;
-    //         self.write_tabs( indent + 1)?;
-    //     } else {
-    //         write!(self.buf, " ")?;
-    //     }
-    //     write!(self.buf, "key: \"{key}\"")?;
-
-    //     if !attributes.is_empty() {
-    //         write!(self.buf, ",")?;
-    //     }
-    // }
-}

+ 1 - 1
packages/autofmt/src/expr.rs

@@ -1,5 +1,5 @@
 //! pretty printer for rsx!
-use std::fmt::{self, Result, Write};
+use std::fmt::{Result, Write};
 
 use crate::Buffer;
 

+ 8 - 14
packages/autofmt/src/lib.rs

@@ -1,18 +1,12 @@
-//! pretty printer for rsx code
-
-pub use crate::buffer::*;
+use crate::buffer::*;
 use crate::util::*;
 
-mod block;
 mod buffer;
-mod children;
 mod component;
 mod element;
 mod expr;
 mod util;
 
-// pub use block::{fmt_block, get_format_blocks};
-
 /// A modification to the original file to be applied by an IDE
 ///
 /// Right now this re-writes entire rsx! blocks at a time, instead of precise line-by-line changes.
@@ -43,7 +37,7 @@ pub fn fmt_file(contents: &str) -> Vec<FormattedBlock> {
 
     use triple_accel::{levenshtein_search, Match};
 
-    for Match { end, k, start } in levenshtein_search(b"rsx! {", contents.as_bytes()) {
+    for Match { end, start, .. } in levenshtein_search(b"rsx! {", contents.as_bytes()) {
         // ensure the marker is not nested
         if start < last_bracket_end {
             continue;
@@ -72,14 +66,14 @@ pub fn fmt_file(contents: &str) -> Vec<FormattedBlock> {
 }
 
 pub fn fmt_block(block: &str) -> Option<String> {
-    let mut buf = Buffer::default();
-    buf.src = block.lines().map(|f| f.to_string()).collect(); // unnecessary clone, but eh, most files are small
-
-    let lines = block.split('\n').collect::<Vec<_>>();
+    let mut buf = Buffer {
+        src: block.lines().map(|f| f.to_string()).collect(),
+        ..Buffer::default()
+    };
 
-    for node in &syn::parse_str::<dioxus_rsx::CallBody>(block).ok()?.roots {
+    for node in syn::parse_str::<dioxus_rsx::CallBody>(block).ok()?.roots {
         buf.write_ident(&node).ok()?;
     }
 
-    Some(buf.buf)
+    buf.consume()
 }

+ 10 - 13
packages/autofmt/src/util.rs

@@ -1,35 +1,32 @@
 use dioxus_rsx::*;
-use std::fmt::Write;
 
+// todo: use recursive or complete sizeing
 pub fn extract_attr_len(attributes: &[ElementAttrNamed]) -> usize {
     attributes
         .iter()
         .map(|attr| match &attr.attr {
-            ElementAttr::AttrText { name, value } => value.value().len(),
-            ElementAttr::AttrExpression { name, value } => 10,
-            ElementAttr::CustomAttrText { name, value } => value.value().len(),
-            ElementAttr::CustomAttrExpression { name, value } => 10,
-            ElementAttr::EventTokens { name, tokens } => 1000000,
+            ElementAttr::AttrText { value, .. } => value.value().len(),
+            ElementAttr::AttrExpression { .. } => 10,
+            ElementAttr::CustomAttrText { value, .. } => value.value().len(),
+            ElementAttr::CustomAttrExpression { .. } => 10,
+            ElementAttr::EventTokens { .. } => 1000000,
         })
         .sum()
 }
 
 pub fn find_bracket_end(contents: &str) -> Option<usize> {
     let mut depth = 0;
-    let mut i = 0;
 
-    for c in contents.chars() {
+    for (i, c) in contents.chars().enumerate() {
         if c == '{' {
             depth += 1;
         } else if c == '}' {
             depth -= 1;
-        }
 
-        if depth == 0 {
-            return Some(i);
+            if depth == 0 {
+                return Some(i);
+            }
         }
-
-        i += 1;
     }
 
     None