Raise KeyError if passed an invalid row entry (#15227)
This commit is contained in:
parent
d85015e922
commit
a9a9860b0b
1 changed files with 7 additions and 2 deletions
|
|
@ -322,24 +322,29 @@ proc rowEntry*(my: var CsvParser, entry: string): var string =
|
||||||
##
|
##
|
||||||
## Assumes that `readHeaderRow <#readHeaderRow,CsvParser>`_ has already been
|
## Assumes that `readHeaderRow <#readHeaderRow,CsvParser>`_ has already been
|
||||||
## called.
|
## called.
|
||||||
|
##
|
||||||
|
## If specified `entry` does not exist, raises KeyError.
|
||||||
runnableExamples:
|
runnableExamples:
|
||||||
import streams
|
import streams
|
||||||
var strm = newStringStream("One,Two,Three\n1,2,3\n\n10,20,30")
|
var strm = newStringStream("One,Two,Three\n1,2,3\n\n10,20,30")
|
||||||
var parser: CsvParser
|
var parser: CsvParser
|
||||||
parser.open(strm, "tmp.csv")
|
parser.open(strm, "tmp.csv")
|
||||||
## Need calling `readHeaderRow`.
|
## Requires calling `readHeaderRow`.
|
||||||
parser.readHeaderRow()
|
parser.readHeaderRow()
|
||||||
doAssert parser.readRow()
|
doAssert parser.readRow()
|
||||||
doAssert parser.rowEntry("One") == "1"
|
doAssert parser.rowEntry("One") == "1"
|
||||||
doAssert parser.rowEntry("Two") == "2"
|
doAssert parser.rowEntry("Two") == "2"
|
||||||
doAssert parser.rowEntry("Three") == "3"
|
doAssert parser.rowEntry("Three") == "3"
|
||||||
## `parser.rowEntry("NotExistEntry")` causes SIGSEGV fault.
|
doAssertRaises(KeyError):
|
||||||
|
discard parser.rowEntry("NonexistentEntry")
|
||||||
parser.close()
|
parser.close()
|
||||||
strm.close()
|
strm.close()
|
||||||
|
|
||||||
let index = my.headers.find(entry)
|
let index = my.headers.find(entry)
|
||||||
if index >= 0:
|
if index >= 0:
|
||||||
result = my.row[index]
|
result = my.row[index]
|
||||||
|
else:
|
||||||
|
raise newException(KeyError, "Entry `" & entry & "` doesn't exist")
|
||||||
|
|
||||||
when not defined(testing) and isMainModule:
|
when not defined(testing) and isMainModule:
|
||||||
import os
|
import os
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue