fix emoji support in autofmt

This commit is contained in:
Jonathan Kelley committed 2023-01-12 16:29:31 -08:00
1 parent fd4eac3488
commit cc8b910cf3
4 files changed
+48 -36

No files matched your search

+6 -3
View File
@@ -71,8 +71,11 @@ pub fn fmt_file(contents: &str) -> Vec<FormattedBlock> {
}; };
let remaining = &contents[end - 1..]; let remaining = &contents[end - 1..];
let bracket_end = find_bracket_end(remaining).unwrap(); let bracket_end = find_bracket_end(remaining).unwrap();
let sub_string = &contents[end..bracket_end + end - 1];
let sub_string = &remaining[1..bracket_end - 1];
last_bracket_end = bracket_end + end - 1; last_bracket_end = bracket_end + end - 1;
let mut new = fmt_block(sub_string, indent_level).unwrap(); let mut new = fmt_block(sub_string, indent_level).unwrap();
@@ -85,7 +88,7 @@ pub fn fmt_file(contents: &str) -> Vec<FormattedBlock> {
indent_level = 0; indent_level = 0;
} }
let end_marker = end + bracket_end - indent_level * 4 - 1; let end_marker = end + bracket_end - indent_level * 4 - 2;
if new == contents[end..end_marker] { if new == contents[end..end_marker] {
continue; continue;
@@ -118,7 +121,7 @@ pub fn write_block_out(body: CallBody) -> Option<String> {
} }
pub fn fmt_block(block: &str, indent_level: usize) -> Option<String> { pub fn fmt_block(block: &str, indent_level: usize) -> Option<String> {
let body = syn::parse_str::<dioxus_rsx::CallBody>(block).ok()?; let body = syn::parse_str::<dioxus_rsx::CallBody>(block).unwrap();
let mut buf = Writer { let mut buf = Writer {
src: block.lines().map(|f| f.to_string()).collect(), src: block.lines().map(|f| f.to_string()).collect(),
+5 -2
View File
@@ -1,14 +1,17 @@
pub fn find_bracket_end(contents: &str) -> Option<usize> { pub fn find_bracket_end(contents: &str) -> Option<usize> {
let mut depth = 0; let mut depth = 0;
for (i, c) in contents.chars().enumerate() { let mut len = 0;
for c in contents.chars() {
len += c.len_utf8();
if c == '{' { if c == '{' {
depth += 1; depth += 1;
} else if c == '}' { } else if c == '}' {
depth -= 1; depth -= 1;
if depth == 0 { if depth == 0 {
return Some(i); return Some(len);
} }
} }
} }
+32 -31
View File
@@ -1,35 +1,36 @@
macro_rules! twoway { macro_rules! twoway {
($val:literal => $name:ident) => { (
#[test] $(
fn $name() {
let src = include_str!(concat!("./samples/", $val, ".rsx")); // doc attrs
let formatted = dioxus_autofmt::fmt_file(src); $( #[doc = $doc:expr] )*
let out = dioxus_autofmt::apply_formats(src, formatted); $name:ident
pretty_assertions::assert_eq!(&src, &out); ),*
} ) => {
$(
$( #[doc = $doc] )*
#[test]
fn $name() {
let src = include_str!(concat!("./samples/", stringify!($name), ".rsx"));
let formatted = dioxus_autofmt::fmt_file(src);
let out = dioxus_autofmt::apply_formats(src, formatted);
pretty_assertions::assert_eq!(&src, &out);
}
)*
}; };
} }
twoway! ("simple" => simple); twoway![
simple,
twoway! ("comments" => comments); comments,
attributes,
twoway! ("attributes" => attributes); manual_props,
complex,
twoway! ("manual_props" => manual_props); tiny,
tinynoopt,
twoway! ("complex" => complex); long,
key,
twoway! ("tiny" => tiny); multirsx,
commentshard,
twoway! ("tinynoopt" => tinynoopt); emoji
];
twoway! ("long" => long);
twoway! ("key" => key);
// Disabled because we can't handle comments on exprs yet
twoway! ("multirsx" => multirsx);
// Disabled because we can't handle comments on exprs yet
twoway! ("commentshard" => commentshard);
+5
View File
@@ -0,0 +1,5 @@
rsx! {
div { class: "asdasdasd asdasdasd asdasdasd asdasdasd asdasdasd asdasdasd asdasdasd asdasdasd asdasdasd",
section { "🦀🦀🦀🦀🦀🦀🦀🦀🦀🦀" }
}
}