blob: 138ef3f248d392dea7f5f9afdf9c676b12779a9f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
{-# LANGUAGE FlexibleInstances, TypeSynonymInstances #-}
module StringBuffer where
import Data.Monoid
import Buffer
instance Buffer String where
toString = id
fromString = id
line n b = safeIndex n (lines b)
replaceLine n l b = unlines . uncurry replaceLine' . splitAt n . lines $ b
where replaceLine' pre [] = pre
replaceLine' pre (_:ls) = pre ++ l:ls
numLines = length . lines
value = length . words
safeIndex :: Int -> [a] -> Maybe a
safeIndex n _ | n < 0 = Nothing
safeIndex _ [] = Nothing
safeIndex 0 (x:_) = Just x
safeIndex n (_:xs) = safeIndex (n-1) xs
|