Remove Util module

This commit is contained in:
Joscha 2020-03-01 09:48:27 +00:00
parent c76a16bcbe
commit 74e1c3d31a
2 changed files with 4 additions and 18 deletions

View file

@ -9,8 +9,6 @@ module Profold.LineNode
import qualified Data.Text as T
import qualified Data.Vector as V
import Profold.Util
data LineNode = LineNode
{ lineText :: T.Text
, lineChildren :: V.Vector LineNode
@ -32,6 +30,10 @@ flatten ln
flattenChild :: Int -> LineNode -> V.Vector (Path, LineNode)
flattenChild i c = V.map (\(is, n) -> (i : is, n)) $ flatten c
modifyAtIndex :: Int -> (a -> a) -> V.Vector a -> V.Vector a
-- Yes, this function looks ugly, but it's short enough that I don't care.
modifyAtIndex i f v = maybe v (\a -> v V.// [(i, f a)]) (v V.!? i)
modify :: (LineNode -> LineNode) -> Path -> LineNode -> LineNode
modify f [] ln = f ln
modify f (i:is) ln =

View file

@ -1,16 +0,0 @@
module Profold.Util
( modifyAtIndex
, findSurrounding
) where
import Data.Maybe
import qualified Data.Vector as V
modifyAtIndex :: Int -> (a -> a) -> V.Vector a -> V.Vector a
-- Yes, this function looks ugly, but it's short enough that I don't care.
modifyAtIndex i f v = maybe v (\a -> v V.// [(i, f a)]) (v V.!? i)
findSurrounding :: (a -> Bool) -> V.Vector a -> (Maybe a, Maybe a)
findSurrounding f v = fromMaybe (Nothing, Nothing) $ do
i <- V.findIndex f v
pure (v V.!? (i - 1), v V.!? (i + 1))