-- 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: -- -- @package spreadsheet @version 0.1.3.10 module Data.Spreadsheet -- | A spreadsheet is a list of lines, each line consists of cells, and -- each cell is a string. Ideally, spreadsheets read from a CSV file have -- lines with the same number of cells per line. However, we cannot -- assert this, and thus we parse the lines as they come in. type T = [[String]] -- | fromString qm sep text parses text into a -- spreadsheet, using the quotation character qm and the -- separator character sep. -- --
--   >>> 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