OK, so I can't think my way out of a paper this morning.
Can I access FasterCVS#lineno while inside a foreach?
For example,
$ cat << EOF > csv_file
one
two
three
EOF
$ ruby -rubygems \
-e'require "fastercsv";FasterCSV.foreach("csv_file")\
{|r| puts "lineno somehow"}'
Thanks,
···
--
Bil Kleb
http://fun3d.larc.nasa.gov
OK, so I can't think my way out of a paper this morning.
Can I access FasterCVS#lineno while inside a foreach?
For example,
$ cat << EOF > csv_file
one
two
three
EOF
$ ruby -rubygems \
-e'require "fastercsv";FasterCSV.foreach("csv_file")\
{|r| puts "lineno somehow"}'
Thanks,
--
Bil Kleb
http://fun3d.larc.nasa.gov
Bil,
Since it looks like the answer to your first question is "No.", what if you defined:
class FasterCSV
def self.foreach_with_lineno(path, options = Hash.new, &block)
open(path, options) do |csv|
csv.each {|line| block[line, csv.lineno]}
end
end
end
FasterCSV.foreach_with_lineno("csv_file") {|r,l| puts "#{l}: #{r}"}
1: one
2: two
3: three
=> nil
-Rob
Rob Biedenharn http://agileconsultingllc.com
Rob@AgileConsultingLLC.com
···
On Apr 24, 2008, at 7:55 AM, Bil Kleb wrote:
No, but you can switch to an each() iterator and get at it that way (just as you would with an IO object):
$ cat data.csv
one
two
three
$ cat fcsv_example.rb
#!/usr/bin/env ruby -wKU
require "rubygems"
require "faster_csv"
FCSV.open("data.csv") do |csv|
csv.each do |row|
puts "#{csv.lineno}: #{row}"
end
end
$ ruby fcsv_example.rb
1: one
2: two
3: three
Hope that helps.
James Edward Gray II
···
On Apr 24, 2008, at 6:55 AM, Bil Kleb wrote:
OK, so I can't think my way out of a paper this morning.
Can I access FasterCVS#lineno while inside a foreach?
They seem to have reached Usenet OK:
http://groups.google.com/group/comp.lang.ruby/browse_thread/thread/9a1402264883f615#
James Edward Gray II
···
On Apr 24, 2008, at 10:25 AM, Bil wrote:
P.S. My comp.lang.ruby newsfeed didn't carry either of your replies.