Suuport custom separator
MODIFY
mrblib/string.rb
mrblib/string.rb
@@ -9,12 +9,15 @@ class String
# and pass the respective line.
#
# ISO 15.2.10.5.15
- def each_line(&block)
+ def each_line(rs = "\n", &block)
+ return block.call(self) if rs.nil?
+ rs = rs.to_str
offset = 0
+ rs_len = rs.length
this = dup
- while pos = this.index("\n", offset)
- block.call(this[offset, pos + 1 - offset])
- offset = pos + 1
+ while pos = this.index(rs, offset)
+ block.call(this[offset, pos + rs_len - offset])
+ offset = pos + rs_len
end
block.call(this[offset, this.size - offset]) if this.size > offset
self

MODIFY
test/t/string.rb
test/t/string.rb
@@ -341,6 +341,12 @@ assert('String#each_line', '15.2.10.5.15') do
end
assert_equal list, n_list
+
+ n_list.clear
+ a.each_line("li") do |line|
+ n_list << line
+ end
+ assert_equal ["first li", "ne\nsecond li", "ne\nthird li", "ne"], n_list
end
assert('String#empty?', '15.2.10.5.16') do

Suuport custom separator