Update readme for csv parsing
This commit is contained in:
82
README.md
82
README.md
@@ -16,6 +16,7 @@ A Go-based tool for modifying XML, JSON, and text documents using XPath/JSONPath
|
||||
- String manipulations
|
||||
- Date conversions
|
||||
- Structural changes
|
||||
- CSV/TSV parsing with comments and headers
|
||||
- Whole ass Lua environment
|
||||
- **Error Handling**: Comprehensive error detection for:
|
||||
- Invalid XML/JSON
|
||||
@@ -101,6 +102,87 @@ chef -xml "//item" "if tonumber(v.stock) > 0 then v.price = v.price * 0.8 end" i
|
||||
<item stock="5" price="8.00"/>
|
||||
```
|
||||
|
||||
### 6. CSV/TSV Processing
|
||||
The Lua environment includes CSV parsing functions that support comments, headers, and custom delimiters.
|
||||
|
||||
```lua
|
||||
-- Basic CSV parsing
|
||||
local rows = fromCSV(csvText)
|
||||
|
||||
-- With options
|
||||
local rows = fromCSV(csvText, {
|
||||
delimiter = "\t", -- Tab delimiter for TSV (default: ",")
|
||||
hasHeaders = true, -- First row is headers (default: false)
|
||||
hasComments = true -- Filter lines starting with # (default: false)
|
||||
})
|
||||
|
||||
-- Access by index
|
||||
local value = rows[1][2]
|
||||
|
||||
-- Access by header name (when hasHeaders = true)
|
||||
local value = rows[1].Name
|
||||
|
||||
-- Convert back to CSV
|
||||
local csv = toCSV(rows, "\t") -- Optional delimiter parameter
|
||||
```
|
||||
|
||||
**Example with commented TSV file:**
|
||||
```lua
|
||||
-- Input file:
|
||||
-- #mercenary_profiles
|
||||
-- Id Name Value
|
||||
-- 1 Test 100
|
||||
-- 2 Test2 200
|
||||
|
||||
local csv = readFile("mercenaries.tsv")
|
||||
local rows = fromCSV(csv, {
|
||||
delimiter = "\t",
|
||||
hasHeaders = true,
|
||||
hasComments = true
|
||||
})
|
||||
|
||||
-- Access data
|
||||
rows[1].Name -- "Test"
|
||||
rows[2].Value -- "200"
|
||||
```
|
||||
|
||||
## Lua Helper Functions
|
||||
|
||||
The Lua environment includes many helper functions:
|
||||
|
||||
### Math Functions
|
||||
- `min(a, b)`, `max(a, b)` - Min/max of two numbers
|
||||
- `round(x, n)` - Round to n decimal places
|
||||
- `floor(x)`, `ceil(x)` - Floor/ceiling functions
|
||||
|
||||
### String Functions
|
||||
- `upper(s)`, `lower(s)` - Case conversion
|
||||
- `trim(s)` - Remove leading/trailing whitespace
|
||||
- `format(s, ...)` - String formatting
|
||||
- `strsplit(inputstr, sep)` - Split string by separator
|
||||
|
||||
### CSV Functions
|
||||
- `fromCSV(csv, options)` - Parse CSV/TSV text into table of rows
|
||||
- Options: `delimiter` (default: ","), `hasHeaders` (default: false), `hasComments` (default: false)
|
||||
- `toCSV(rows, delimiter)` - Convert table of rows back to CSV text
|
||||
|
||||
### Conversion Functions
|
||||
- `num(str)` - Convert string to number (returns 0 if invalid)
|
||||
- `str(num)` - Convert number to string
|
||||
- `is_number(str)` - Check if string is numeric
|
||||
|
||||
### Table Functions
|
||||
- `isArray(t)` - Check if table is a sequential array
|
||||
- `dump(table, depth)` - Print table structure recursively
|
||||
|
||||
### HTTP Functions
|
||||
- `fetch(url, options)` - Make HTTP request, returns response table
|
||||
- Options: `method`, `headers`, `body`
|
||||
- Returns: `{status, statusText, ok, body, headers}`
|
||||
|
||||
### Regex Functions
|
||||
- `re(pattern, input)` - Apply regex pattern, returns table with matches
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user