Files
Nim/tests/views/tsplit_into_table.nim
Andreas Rumpf 86d7b63e2a better support for view types (#15436)
* you can put borrows into tables

* enforces mutating views only mutate mutable data
2020-09-30 20:44:18 +02:00

41 lines
795 B
Nim

discard """
output: '''5: 231
0: asdf
'''
"""
import tables
{.experimental: "views".}
const
Whitespace = {' ', '\t', '\n', '\r'}
proc split*(s: string, seps: set[char] = Whitespace,
maxsplit: int = -1): Table[int, openArray[char]] =
var last = 0
var splits = maxsplit
result = initTable[int, openArray[char]]()
while last <= len(s):
var first = last
while last < len(s) and s[last] notin seps:
inc(last)
if splits == 0: last = len(s)
result[first] = toOpenArray(s, first, last-1)
if splits == 0: break
dec(splits)
inc(last)
proc `$`(x: openArray[char]): string =
result = newString(x.len)
for i in 0..<x.len: result[i] = x[i]
proc main() =
let words = split("asdf 231")
for i, x in words:
echo i, ": ", x
main()