diff options
Diffstat (limited to 'tests/views/tsplit_into_openarray.nim')
-rw-r--r-- | tests/views/tsplit_into_openarray.nim | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/views/tsplit_into_openarray.nim b/tests/views/tsplit_into_openarray.nim new file mode 100644 index 000000000..3ea290d89 --- /dev/null +++ b/tests/views/tsplit_into_openarray.nim @@ -0,0 +1,37 @@ +discard """ + output: '''asdf +231 +''' + cmd: "nim c --gc:arc -d:useMalloc -g $file" + valgrind: true +""" + +{.experimental: "views".} + +const + Whitespace = {' ', '\t', '\n', '\r'} + +iterator split*(s: string, seps: set[char] = Whitespace, + maxsplit: int = -1): openArray[char] = + var last = 0 + var splits = maxsplit + + while last <= len(s): + var first = last + while last < len(s) and s[last] notin seps: + inc(last) + if splits == 0: last = len(s) + yield 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() = + for x in split("asdf 231"): + echo x + +main() |