summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAndy Davidoff <disruptek@users.noreply.github.com>2019-12-09 00:58:36 -0500
committerAndreas Rumpf <rumpf_a@web.de>2019-12-09 06:58:36 +0100
commita3d45d0c1b20982f79b384ddc9af27b745329596 (patch)
tree98584e346c69d7684c28d695025a6e324fcdc718
parenta02d043b5850d9d6ca6584ce513b72ddedf2ef04 (diff)
downloadNim-a3d45d0c1b20982f79b384ddc9af27b745329596.tar.gz
add a StringTable.clear that requires no mode specification (#12853)
* add clear overload, test, changelog

* add since annotation
-rw-r--r--changelog.md1
-rw-r--r--lib/pure/strtabs.nim6
-rw-r--r--tests/stdlib/tstrtabs.nim3
3 files changed, 9 insertions, 1 deletions
diff --git a/changelog.md b/changelog.md
index d736400f9..18eece00c 100644
--- a/changelog.md
+++ b/changelog.md
@@ -34,6 +34,7 @@
   delimiter instead of '{' and '}'.
 - introduced new procs in `tables.nim`: `OrderedTable.pop`, `CountTable.del`,
   `CountTable.pop`, `Table.pop`
+- To `strtabs.nim`, added `StringTable.clear` overload that reuses the existing mode.
 
 
 - Added `sugar.outplace` for turning in-place algorithms like `sort` and `shuffle` into
diff --git a/lib/pure/strtabs.nim b/lib/pure/strtabs.nim
index 4e40aab33..3af21431e 100644
--- a/lib/pure/strtabs.nim
+++ b/lib/pure/strtabs.nim
@@ -308,7 +308,7 @@ proc getValue(t: StringTableRef, flags: set[FormatFlag], key: string): string =
 
 proc clear*(s: StringTableRef, mode: StringTableMode) {.
   rtlFunc, extern: "nst$1".} =
-  ## Resets a string table to be empty again.
+  ## Resets a string table to be empty again, perhaps altering the mode.
   ##
   ## See also:
   ## * `del proc <#del,StringTableRef,string>`_ for removing a key from the table
@@ -324,6 +324,10 @@ proc clear*(s: StringTableRef, mode: StringTableMode) {.
   for i in 0..<s.data.len:
     s.data[i].hasValue = false
 
+proc clear*(s: StringTableRef) {.since: (1, 1).} =
+  ## Resets a string table to be empty again without changing the mode.
+  s.clear(s.mode)
+
 proc del*(t: StringTableRef, key: string) =
   ## Removes `key` from `t`.
   ##
diff --git a/tests/stdlib/tstrtabs.nim b/tests/stdlib/tstrtabs.nim
index 18ed57167..5d7e8c762 100644
--- a/tests/stdlib/tstrtabs.nim
+++ b/tests/stdlib/tstrtabs.nim
@@ -82,6 +82,7 @@ key_7: value7
 key_80: value80
 key_8: value8
 key_9: value9
+length of table 0
 length of table 81
 value1 = value2
 '''
@@ -99,3 +100,5 @@ for key, val in pairs(tab):
 writeLine(stdout, "length of table ", $tab.len)
 
 writeLine(stdout, `%`("$key1 = $key2", tab, {useEnvironment}))
+tab.clear
+writeLine(stdout, "length of table ", $tab.len)