From 023bc647bdbd5b2d5e05eb49fed5d22e6e821c27 Mon Sep 17 00:00:00 2001 From: ConnorSkees <39542938+ConnorSkees@users.noreply.github.com> Date: Sat, 22 Feb 2020 18:33:42 -0500 Subject: [PATCH] Properly handle trailing commas combined with newlines --- src/selector.rs | 14 +++++++++++++- tests/selectors.rs | 5 +++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/selector.rs b/src/selector.rs index c320696..055c7c6 100644 --- a/src/selector.rs +++ b/src/selector.rs @@ -57,7 +57,10 @@ impl Display for Selector { while let Some(sel) = iter.peek() { if sel != &&SelectorKind::Multiple { write!(f, ",")?; - if sel != &&SelectorKind::Newline { + if sel == &&SelectorKind::Newline { + iter.next(); + f.write_char('\n')?; + } else { f.write_char(' ')?; } break; @@ -65,6 +68,15 @@ impl Display for Selector { iter.next(); devour_whitespace(&mut iter); } + while let Some(sel) = iter.peek() { + if sel != &&SelectorKind::Multiple + && sel != &&SelectorKind::Newline + && !sel.is_whitespace() + { + break; + } + iter.next(); + } } _ => write!(f, "{}", s)?, } diff --git a/tests/selectors.rs b/tests/selectors.rs index 6fff5bb..24e7200 100644 --- a/tests/selectors.rs +++ b/tests/selectors.rs @@ -261,3 +261,8 @@ test!( "a,\nb {\n c {\n color: blue;\n }\n color: red;\n}\n", "a,\nb {\n color: red;\n}\na c,\nb c {\n color: blue;\n}\n" ); +test!( + trailing_comma_newline, + "#foo #bar,,\n,#baz #boom, {a: b}", + "#foo #bar,\n#baz #boom {\n a: b;\n}\n" +);