mirror of
https://github.com/nim-lang/Nim.git
synced 2026-06-08 21:04:20 +00:00
Raise KeyError if passed an invalid row entry (#15227)
This commit is contained in:
@@ -322,24 +322,29 @@ proc rowEntry*(my: var CsvParser, entry: string): var string =
|
||||
##
|
||||
## Assumes that `readHeaderRow <#readHeaderRow,CsvParser>`_ has already been
|
||||
## called.
|
||||
##
|
||||
## If specified `entry` does not exist, raises KeyError.
|
||||
runnableExamples:
|
||||
import streams
|
||||
var strm = newStringStream("One,Two,Three\n1,2,3\n\n10,20,30")
|
||||
var parser: CsvParser
|
||||
parser.open(strm, "tmp.csv")
|
||||
## Need calling `readHeaderRow`.
|
||||
## Requires calling `readHeaderRow`.
|
||||
parser.readHeaderRow()
|
||||
doAssert parser.readRow()
|
||||
doAssert parser.rowEntry("One") == "1"
|
||||
doAssert parser.rowEntry("Two") == "2"
|
||||
doAssert parser.rowEntry("Three") == "3"
|
||||
## `parser.rowEntry("NotExistEntry")` causes SIGSEGV fault.
|
||||
doAssertRaises(KeyError):
|
||||
discard parser.rowEntry("NonexistentEntry")
|
||||
parser.close()
|
||||
strm.close()
|
||||
|
||||
let index = my.headers.find(entry)
|
||||
if index >= 0:
|
||||
result = my.row[index]
|
||||
else:
|
||||
raise newException(KeyError, "Entry `" & entry & "` doesn't exist")
|
||||
|
||||
when not defined(testing) and isMainModule:
|
||||
import os
|
||||
|
||||
Reference in New Issue
Block a user