diff options
author | Scott Wadden <scott.wadden@gmail.com> | 2020-08-26 15:00:54 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-26 20:00:54 +0200 |
commit | a9a9860b0b5171487fae100010a18ad71f5d5f6d (patch) | |
tree | 8740180ed7313265664112da040ccbbbffaba512 /lib/pure/parsecsv.nim | |
parent | d85015e9225a0747453a1bd9a8b6f292f5bfe3af (diff) | |
download | Nim-a9a9860b0b5171487fae100010a18ad71f5d5f6d.tar.gz |
Raise KeyError if passed an invalid row entry (#15227)
Diffstat (limited to 'lib/pure/parsecsv.nim')
-rw-r--r-- | lib/pure/parsecsv.nim | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/pure/parsecsv.nim b/lib/pure/parsecsv.nim index 607702fc0..2c0dbb802 100644 --- a/lib/pure/parsecsv.nim +++ b/lib/pure/parsecsv.nim @@ -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 |