From e869a09bc2e0fbd988fdc19014b8b0ad7e4b97c9 Mon Sep 17 00:00:00 2001 From: Martin Dørum Date: Mon, 19 Jun 2023 16:55:16 +0200 Subject: add str.splitlines method The new splitlines method on str is intended to replace usage of fs.read('whatever').strip().split('\n'). The problem with the .strip().split() approach is that it doesn't have a way to represent empty lists (an empty string becomes a list with one empty string, not an empty list), and it doesn't handle Windows-style line endings. --- test cases/common/35 string operations/meson.build | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'test cases/common') diff --git a/test cases/common/35 string operations/meson.build b/test cases/common/35 string operations/meson.build index 116fe0b2b..27cc0d8c8 100644 --- a/test cases/common/35 string operations/meson.build +++ b/test cases/common/35 string operations/meson.build @@ -125,3 +125,15 @@ assert(mysubstring.substring(10, -25) == '', 'substring is broken') assert(mysubstring.substring(-4, 2) == '', 'substring is broken') assert(mysubstring.substring(10, 9) == '', 'substring is broken') assert(mysubstring.substring(8, 10) == 'z', 'substring is broken') + +# str.splitlines() +assert('foo\nbar\nbaz'.splitlines() == ['foo', 'bar', 'baz'], 'splitlines is broken') +assert(''.splitlines() == [], 'splitlines with empty string is broken') +assert('foo\rbar\nbaz\n'.splitlines() == ['foo', 'bar', 'baz'], 'splitlines trailing newline is broken') +assert('hello\r\nworld'.splitlines() == ['hello', 'world']) +assert( + ' leading ws\nand trailing\t'.splitlines() == [' leading ws', 'and trailing\t'], + 'splitlines leading/trailing whitespace is broken', +) +assert('\n\r\n\r'.splitlines() == ['', '', ''], 'splitlines is broken') +assert('foo'.splitlines() == ['foo'], 'splitlines is broken') -- cgit v1.2.3