Project

General

Profile

Bug #13051

Object created with ARGF.class.new fails to update .lineno in .each

Added by lucasbuchala (Lucas Buchala) almost 4 years ago. Updated almost 4 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
ruby 2.4.0rc1 (2016-12-12 trunk 57064) [i686-linux]
[ruby-core:78728]

Description

I don't know if this way of creating ARGF-like objects is supported or not.
I just noticed that it didn't update the .lineno when used in .each.

Consider the example input file:

$ cat file1
foo
bar
baz

The following code:

f = ARGF.class.new('file1')

f.each do |line|
  puts "#{f.lineno} #{line}"
end

Outputs this:

0 foo
0 bar
0 baz

I was expecting this:

1 foo
2 bar
3 baz

If, instead of using .each, I read it in 2 steps with: while line = f.gets; puts f.lineno; ..., then it works, the line numbers are updated.

Also available in: Atom PDF