-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Read and write spreadsheets from and to CSV files in a lazy way -- -- Read and write spreadsheets from and to files containing comma -- separated values (CSV) in a lazy way. Reading from other source than -- plain Strings could be easily added. -- -- If you install this package by -- --
-- cabal install -fbuildExamples ---- -- then the example programs csvreplace and csvextract -- are compiled and installed, too. The program csvreplace fills -- a template text using data from a CSV file. For similar (non-Haskell) -- programs see cut, csvfix, csvtool. The -- program csvextract is the inverse of csvreplace. -- -- Related packages: -- --
-- >>> Spreadsheet.fromString '"' '\t' "\"hello\"\t\"world\"\n\"end\"\n"
-- Exceptional {exception = Nothing, result = [["hello","world"],["end"]]}
--
-- >>> Spreadsheet.fromString '"' ',' "\"hello,world\",\"really\"\n\"end\"\n"
-- Exceptional {exception = Nothing, result = [["hello,world","really"],["end"]]}
--
-- >>> Spreadsheet.fromString '"' ';' "\"hello \"\"world\"\"\"\n\"really\"\n"
-- Exceptional {exception = Nothing, result = [["hello \"world\""],["really"]]}
--
-- >>> Spreadsheet.fromString '"' ',' "\"hello\nworld\"\n"
-- Exceptional {exception = Nothing, result = [["hello\nworld"]]}
--
fromString :: Char -> Char -> String -> Exceptional UserMessage T
-- | fromString qm sep text parses text into a
-- spreadsheet and additionally returns text that follows after CSV
-- formatted data.
fromStringWithRemainder :: Char -> Char -> String -> Exceptional UserMessage (T, String)
-- | This is a quick hack. It does neither handle field nor line separators
-- within quoted fields. You must provide well-formed CSV content without
-- field and line separators within quotations. Everything else yields an
-- error.
fromStringSimple :: Char -> Char -> String -> T
type UserMessage = String
-- | -- >>> Spreadsheet.toString '"' '\t' [["hello","world"],["end"]] -- "\"hello\"\t\"world\"\n\"end\"\n" -- -- >>> Spreadsheet.toString '"' ',' [["hello,world","really"],["end"]] -- "\"hello,world\",\"really\"\n\"end\"\n" -- -- >>> Spreadsheet.toString '"' ';' [["hello \"world\""],["really"]] -- "\"hello \"\"world\"\"\"\n\"really\"\n" -- -- >>> Spreadsheet.toString '"' ',' [["hello\nworld"]] -- "\"hello\nworld\"\n" -- -- >>> take 50 $ Spreadsheet.toString '"' ',' $ repeat ["hello","world"] -- "\"hello\",\"world\"\n\"hello\",\"world\"\n\"hello\",\"world\"\n\"h" -- -- >>> take 50 $ Spreadsheet.toString '"' ',' [cycle ["hello","world"]] -- "\"hello\",\"world\",\"hello\",\"world\",\"hello\",\"world\",\"h" ---- --
-- QC.forAll (QC.elements ";,\t ") $ \sep tableNE -> -- let table = map QC.getNonEmpty tableNE in -- table == -- MEA.result (Spreadsheet.fromString '"' sep -- (Spreadsheet.toString '"' sep table)) --toString :: Char -> Char -> T -> String toStringSimple :: Char -> Char -> T -> String