@@ -2,6 +2,8 @@ import qualified Data.ByteString.Char8 as B
22import qualified Data.ByteString.Lazy.Char8 as BL
33import qualified Data.Text.IO as T
44import qualified Data.Text as T
5+import qualified Data.Text.Encoding as T
6+import qualified Data.Text.Lazy.Encoding as TL
57import qualified Data.Text.Lazy.IO as TL
68import qualified Data.Text.Lazy as TL
79import Data.Int (Int64)
@@ -32,6 +34,18 @@ text file s e = do
3234 where
3335 cut = T.unlines . map (T.take (e - s) . T.drop s) . T.lines
3436
37+textBS file s e = do
38+ bs <- B.readFile file
39+ T.putStr . cut . T.decodeUtf8 $ bs
40+ where
41+ cut = T.unlines . map (T.take (e - s) . T.drop s) . T.lines
42+
43+lazyTextBS file s e = do
44+ t <- BL.readFile file
45+ TL.putStr (cut (fromIntegral s) (fromIntegral e) (TL.decodeUtf8 t))
46+ where
47+ cut s e = TL.unlines . map (TL.take (e - s) . TL.drop s) . TL.lines
48+
3549main = do
3650 (name : ss : es : file : _) <- getArgs
3751 let [(s',"")] = readDec ss
@@ -42,3 +56,5 @@ main = do
4256 "lbs" -> lazyBytestring file s e
4357 "ltext" -> lazyText file s e
4458 "text" -> text file s e
59+ "ltextBS" -> lazyTextBS file s e
60+ "textBS" -> textBS file s e