diff --git a/src-extra/transformation/JbeamEdit/Transformation.hs b/src-extra/transformation/JbeamEdit/Transformation.hs index bb56377e..c1909206 100644 --- a/src-extra/transformation/JbeamEdit/Transformation.hs +++ b/src-extra/transformation/JbeamEdit/Transformation.hs @@ -317,7 +317,7 @@ vertexForestToNodeVector initialMeta vf = oMap (_, listsOfNodes) = mapAccumL stepType initialMeta treesOrder - in V.fromList (concat listsOfNodes) + in foldMap V.fromList listsOfNodes treesOrder :: [VertexTreeType] treesOrder = [LeftTree, MiddleTree, RightTree, SupportTree] diff --git a/src/JbeamEdit/Core/Node.hs b/src/JbeamEdit/Core/Node.hs index c65ba489..991f3f72 100644 --- a/src/JbeamEdit/Core/Node.hs +++ b/src/JbeamEdit/Core/Node.hs @@ -122,7 +122,7 @@ possiblyChildren n = expectArray n <|> expectObject n moreNodesThanOne :: Vector Node -> Bool moreNodesThanOne v - | len == 1 = any moreNodesThanOne . possiblyChildren $ V.head v + | len == 1 = any moreNodesThanOne . possiblyChildren $ V.unsafeHead v | len > 1 = True | otherwise = False where diff --git a/src/JbeamEdit/Parsing/Jbeam.hs b/src/JbeamEdit/Parsing/Jbeam.hs index e9a88ca5..6d1edf3b 100644 --- a/src/JbeamEdit/Parsing/Jbeam.hs +++ b/src/JbeamEdit/Parsing/Jbeam.hs @@ -47,11 +47,11 @@ separatorParser = do comma <- MP.optional (MP.label "comma" $ byteChar ',') ws2 <- MP.takeWhileP Nothing wordIsSpace - let countNewlines = length . filter (== '\n') . map toChar . LBS.unpack - totalNewlines = countNewlines ws1 + countNewlines ws2 - hasNewline = - isNothing comma && '\n' `elem` map toChar (LBS.unpack ws1) - || '\n' `elem` map toChar (LBS.unpack ws2) + let nl = toWord8 '\n' + ws1Newlines = LBS.count nl ws1 + ws2Newlines = LBS.count nl ws2 + totalNewlines = ws1Newlines + ws2Newlines + hasNewline = isNothing comma && ws1Newlines > 0 || ws2Newlines > 0 modify ( \s ->