Project

General

Profile

Actions

Bug #14257

closed

the chomp option removes newlines in additon to the provided separator for String#each_line and String#lines

Added by AaronLasseigne (Aaron Lasseigne) about 6 years ago. Updated about 6 years ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:84552]

Description

I'm not entirely sure this is a bug but I had a hard time finding anything that indicated that the change was on purpose.

The chomp option would remove the provided separator from each line. Now it does that and it also removes newlines.

2.4

> "a b c d\n".lines(' ', chomp: true)
=> ["a", "b", "c", "d\n"]

2.5

> "a b c d\n".lines(' ', chomp: true)
=> ["a", "b", "c", "d"]

Updated by shevegen (Robert A. Heiler) about 6 years ago

I wanted to have a look but to my surprise, the documentation at:

https://ruby-doc.org/core-2.5.0/String.html#method-i-lines

does not seem to indicate more than one agument to this method?

Either way, could someone perhaps add a few examples to this
method, on the documentation, perhaps also including the
lines(' ', chomp: true) variant? Because as it presently is,
I can't seem to find the chomp: true part. Perhaps it was added
only somewhat recently.

Actions #2

Updated by nobu (Nobuyoshi Nakada) about 6 years ago

  • Status changed from Open to Closed

Applied in changeset trunk|r61513.


string.c: chomp rs at the end

  • string.c (rb_str_enumerate_lines): should chomp record separator
    only, but not a newline, at the end of the receiver as well as
    middle, if the separator is given.
    [ruby-core:84552] [Bug #14257]
Actions #3

Updated by nobu (Nobuyoshi Nakada) about 6 years ago

  • Backport changed from 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN to 2.3: DONTNEED, 2.4: DONTNEED, 2.5: REQUIRED

Updated by naruse (Yui NARUSE) about 6 years ago

  • Backport changed from 2.3: DONTNEED, 2.4: DONTNEED, 2.5: REQUIRED to 2.3: DONTNEED, 2.4: DONTNEED, 2.5: DONE

ruby_2_5 r61628 merged revision(s) 61513.

Updated by nobu (Nobuyoshi Nakada) about 6 years ago

  • Backport changed from 2.3: DONTNEED, 2.4: DONTNEED, 2.5: DONE to 2.3: DONTNEED, 2.4: DONTNEED, 2.5: REQUIRED

Sorry, r61636 is needed too.
Huge RS with chomp option could cause a SEGV.

Updated by naruse (Yui NARUSE) about 6 years ago

  • Backport changed from 2.3: DONTNEED, 2.4: DONTNEED, 2.5: REQUIRED to 2.3: DONTNEED, 2.4: DONTNEED, 2.5: DONE

ruby_2_5 r62421 merged revision(s) 61636.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0