self
removed from its last line terminator (if any).assert "Hello\n".chomp == "Hello"
assert "Hello".chomp == "Hello"
assert "\n".chomp == ""
assert "".chomp == ""
Line terminators are "\n"
, "\r\n"
and "\r"
.
A single line terminator, the last one, is removed.
assert "\r\n".chomp == ""
assert "\r\n\n".chomp == "\r\n"
assert "\r\n\r\n".chomp == "\r\n"
assert "\r\n\r".chomp == "\r\n"
Note: unlike with most IO methods like Reader::read_line
,
a single \r
is considered here to be a line terminator and will be removed.
# Returns `self` removed from its last line terminator (if any).
#
# ~~~
# assert "Hello\n".chomp == "Hello"
# assert "Hello".chomp == "Hello"
#
# assert "\n".chomp == ""
# assert "".chomp == ""
# ~~~
#
# Line terminators are `"\n"`, `"\r\n"` and `"\r"`.
# A single line terminator, the last one, is removed.
#
# ~~~
# assert "\r\n".chomp == ""
# assert "\r\n\n".chomp == "\r\n"
# assert "\r\n\r\n".chomp == "\r\n"
# assert "\r\n\r".chomp == "\r\n"
# ~~~
#
# Note: unlike with most IO methods like `Reader::read_line`,
# a single `\r` is considered here to be a line terminator and will be removed.
fun chomp: SELFTYPE
do
var len = length
if len == 0 then return self
var l = self.chars.last
if l == '\r' then
return substring(0, len-1)
else if l != '\n' then
return self
else if len > 1 and self.chars[len-2] == '\r' then
return substring(0, len-2)
else
return substring(0, len-1)
end
end
lib/core/text/abstract_text.nit:523,2--559,4