From df58b6eebd4d6efd4010e0169fec10c11f4b6bea Mon Sep 17 00:00:00 2001 From: Kevin Amado Date: Wed, 16 Feb 2022 23:23:33 -0500 Subject: [PATCH] feat: inline let-ins comments --- src/rules/let_in.rs | 13 +++++++++++-- tests/cases/comment/in | 14 ++++++++++++++ tests/cases/comment/out | 17 +++++++++++++++++ 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/src/rules/let_in.rs b/src/rules/let_in.rs index c377b3e..14bc123 100644 --- a/src/rules/let_in.rs +++ b/src/rules/let_in.rs @@ -38,19 +38,27 @@ pub fn rule( } let mut item_index: usize = 0; + let mut inline_next_comment = false; loop { // /**/ children.drain_comments_and_newlines(|element| match element { crate::children::DrainCommentOrNewline::Comment(text) => { - steps.push_back(crate::builder::Step::NewLine); - steps.push_back(crate::builder::Step::Pad); + if inline_next_comment && text.starts_with("#") { + steps.push_back(crate::builder::Step::Whitespace); + } else { + steps.push_back(crate::builder::Step::NewLine); + steps.push_back(crate::builder::Step::Pad); + } steps.push_back(crate::builder::Step::Comment(text)); + inline_next_comment = false; } crate::children::DrainCommentOrNewline::Newline(newlines) => { if newlines > 1 && item_index > 0 && item_index < items_count { steps.push_back(crate::builder::Step::NewLine); } + + inline_next_comment = newlines == 0; } }); @@ -77,6 +85,7 @@ pub fn rule( } children.move_next(); + inline_next_comment = true; } } diff --git a/tests/cases/comment/in b/tests/cases/comment/in index 67e6d92..7ed19e5 100644 --- a/tests/cases/comment/in +++ b/tests/cases/comment/in @@ -72,6 +72,20 @@ #7 } + (let # 1 + #2 + a=1; # 3 + b=1; + c=1; # 4 + #5 + + #6 + + d=1; + #7 + in + d) + ({ a, # comment b ? 2,# comment diff --git a/tests/cases/comment/out b/tests/cases/comment/out index f95ba75..9900c8e 100644 --- a/tests/cases/comment/out +++ b/tests/cases/comment/out @@ -81,6 +81,23 @@ #7 } + ( + let + # 1 + #2 + a = 1; # 3 + b = 1; + c = 1; # 4 + #5 + + #6 + + d = 1; + #7 + in + d + ) + ( { a,