From 21d038c676ce0cd14f6e4c2e18424700fe79880a Mon Sep 17 00:00:00 2001 From: zcesur <17045339+zcesur@users.noreply.github.com> Date: Mon, 17 Aug 2020 19:55:25 +0300 Subject: [PATCH] Make parsed sheet more compact by merging adjacent lyrics tokens --- src/Main.elm | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/Main.elm b/src/Main.elm index e57d003..fd15de6 100644 --- a/src/Main.elm +++ b/src/Main.elm @@ -85,10 +85,25 @@ parseSheet = isMusical : Char -> Bool isMusical c = List.member c [ '+', '-', '#', '/' ] + + consCompact : Token -> List Token -> List Token + consCompact x ys = + case ys of + t :: ts -> + case ( x, t ) of + ( Lyrics a, Lyrics b ) -> + Lyrics (a ++ b) :: ts + + _ -> + x :: ys + + [] -> + x :: ys in String.toList >> List.groupWhile (\x y -> xor (isWordSymbol x) (isWordSymbol y) |> not) >> List.map (fromNonEmpty >> String.fromList >> parseToken) + >> List.foldr consCompact [] parseToken : String -> Token