cabal-gild-0.3.0.0: source/library/CabalGild/Type/Line.hs
module CabalGild.Type.Line where
import qualified CabalGild.Type.Chunk as Chunk
import qualified Data.ByteString as ByteString
import qualified Distribution.Compat.Lens as Lens
data Line = Line
{ indent :: Int,
chunk :: Chunk.Chunk
}
deriving (Eq, Show)
chunkLens :: Lens.Lens' Line Chunk.Chunk
chunkLens f s = fmap (\a -> s {chunk = a}) . f $ chunk s
empty :: Line
empty =
Line
{ indent = 0,
chunk = mempty
}
isEmpty :: Line -> Bool
isEmpty = Chunk.isEmpty . chunk
toByteString :: Line -> ByteString.ByteString
toByteString l =
if isEmpty l
then ByteString.empty
else
mappend (ByteString.replicate (2 * indent l) 0x20)
. Chunk.value
$ chunk l