From: nobu@... Date: 2018-01-23T14:02:06+00:00 Subject: [ruby-core:84993] [Ruby trunk Feature#5129] Create a core class "FileArray" and make "ARGF" its instance Issue #5129 has been updated by nobu (Nobuyoshi Nakada). Description updated yimutang (Joey Zhou) wrote: > For example, I want to mix two *groups* of files, not two files: `FileGroup` ? ---------------------------------------- Feature #5129: Create a core class "FileArray" and make "ARGF" its instance https://bugs.ruby-lang.org/issues/5129#change-69700 * Author: yimutang (Joey Zhou) * Status: Assigned * Priority: Normal * Assignee: matz (Yukihiro Matsumoto) * Target version: ---------------------------------------- I suggest to create a class "`FileArray`" whose instance behaves just like `ARGF` do. And I think `ARGF` should be an instance of `FileArray`. Now when I "`p ARGF.class`", I get "`ARGF.class`", so `ARGF` is an instance of `ARGF.class`, how meaningless it is. FileArray methods: ```ruby # create an instance fa = FileArray.new('a.txt','b.txt','c.txt') # take many methods from IO # most methods from ARGF should be instance methods of ARGF fa.each {|line| puts line } fa.realines fa.filename # current file # but "argv" not p fa.file_list # in ARGF, its ARGF.argv, but #argv is not a proper name for FileArray # ARGV array can be modified, adding new file into it, all replace to a new file list. # FileArray should add some methods to modify the inner file list. fa.insert(3,"d.txt") fa.delete('a.txt') ``` With `FileArray`, You can create multiple `ARGF`-like file arrays simultaneously. For example, I want to mix two *groups* of files, not two files: ```ruby a_files = FileArray.new(*Dir.glob('a*.txt')) b_files = FileArray.new(*Dir.glob('b*.txt')) enum_a = a_files.each enum_b = b_files.each loop do puts enum_a.next puts enum_b.next end ``` -- https://bugs.ruby-lang.org/ Unsubscribe: