diff options
Diffstat (limited to 'Data/DefaultContent/Libraries/lua-csv/README.md')
-rw-r--r-- | Data/DefaultContent/Libraries/lua-csv/README.md | 93 |
1 files changed, 0 insertions, 93 deletions
diff --git a/Data/DefaultContent/Libraries/lua-csv/README.md b/Data/DefaultContent/Libraries/lua-csv/README.md deleted file mode 100644 index d10314a..0000000 --- a/Data/DefaultContent/Libraries/lua-csv/README.md +++ /dev/null @@ -1,93 +0,0 @@ -# Lua-CSV - delimited file reading - -## 1. What? - -Lua-CSV is a Lua module for reading delimited text files (popularly CSV and -tab-separated files, but you can specify the separator). - -Lua-CSV tries to auto-detect whether a file is delimited with commas or tabs, -copes with non-native newlines, survives newlines and quotes inside quoted -fields and offers an iterator interface so it can handle large files. - - -## 2. How? - - local csv = require("csv") - local f = csv.open("file.csv") - for fields in f:lines() do - for i, v in ipairs(fields) do print(i, v) end - end - -`csv.open` takes a second argument `parameters`, a table of parameters -controlling how the file is read: - -+ `separator` sets the separator. It'll probably guess the separator - correctly if it's a comma or a tab (unless, say, the first field in a - tab-delimited file contains a comma), but if you want something else you'll - have to set this. It could be more than one character, but it's used as - part of a set: `"["..sep.."\n\r]"` - -+ Set `header` to true if the file contains a header and each set of fields - will be keyed by the names in the header rather than by integer index. - -+ `columns` provides a mechanism for column remapping. - Suppose you have a csv file as follows: - - Word,Number - ONE,10 - - And columns is: - - + `{ word = true }` then the only field in the file would be - `{ word = "ONE" }` - + `{ first = { name = "word"} }` then it would be `{ first = "ONE" }` - + `{ word = { transform = string.lower }}` would give `{ word = "one" }` - + finally, - - { word = true - number = { transform = function(x) return tonumber(x) / 10 end }} - - would give `{ word = "ONE", number = 1 }` - - A column can have more than one name: - `{ first = { names = {"word", "worm"}}}` to help cope with badly specified - file formats and spelling mistakes. - -+ `buffer_size` controls the size of the blocks the file is read in. The - default is 1MB. It used to be 4096 bytes which is what `pagesize` says on - my system, but that seems kind of small. - -`csv.openstring` works exactly like `csv.open` except the first argument -is the contents of the csv file. In this case `buffer_size` is set to -the length of the string. - -## 3. Requirements - -Lua 5.1, 5.2 or LuaJIT. - - -## 4. Issues - -+ Some whitespace-delimited files might use more than one space between - fields, for example if the columns are "manually" aligned: - - street nr city - "Oneway Street" 1 Toontown - - It won't cope with this - you'll get lots of extra empty fields. - -## 5. Wishlist - -+ Tests would be nice. -+ So would better LDoc documentation. - - -## 6. Alternatives - -+ [Penlight](http://github.com/stevedonovan/penlight) contains delimited - file reading. It reads the whole file in one go. -+ The Lua Wiki contains two pages on CSV - [here](http://lua-users.org/wiki/LuaCsv) and - [here](http://lua-users.org/wiki/CsvUtils). -+ There's an example using [LPeg](http://www.inf.puc-rio.br/~roberto/lpeg/) - to parse CSV [here](http://www.inf.puc-rio.br/~roberto/lpeg/#CSV) |