summary refs log tree commit diff stats
path: root/lib/pure/parsecsv.nim
diff options
context:
space:
mode:
authorScott Wadden <scott.wadden@gmail.com>2020-08-26 15:00:54 -0300
committerGitHub <noreply@github.com>2020-08-26 20:00:54 +0200
commita9a9860b0b5171487fae100010a18ad71f5d5f6d (patch)
tree8740180ed7313265664112da040ccbbbffaba512 /lib/pure/parsecsv.nim
parentd85015e9225a0747453a1bd9a8b6f292f5bfe3af (diff)
downloadNim-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.nim9
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