How to use variable arguments with ruby's OptionParser

前端 未结 1 1899
悲&欢浪女
悲&欢浪女 2021-02-15 11:02

I don\'t know ruby very well, but I\'m trying to add some functionality to this script a co-worker wrote.

Basically right now it takes a few flags and standard in as in

1条回答
  •  夕颜
    夕颜 (楼主)
    2021-02-15 11:28

    OPTS = {}
    
    op = OptionParser.new do |x|
        x.banner = 'cat  '      
        x.separator ''
    
        x.on("-A", "--show-all", "Equivalent to -vET")               
            { OPTS[:showall] = true }      
    
        x.on("-b", "--number-nonblank", "number nonempty output lines") 
            { OPTS[:number_nonblank] = true }      
    
        x.on("-x", "--start-from NUM", Integer, "Start numbering from NUM")        
            { |n| OPTS[:start_num] = n }
    
        x.on("-h", "--help", "Show this message") 
            { puts op;  exit }
    
    end
    
    op.parse!(ARGV)
    
    # Example code for dealing with filenames
    ARGV.each{ |fn| output_file(OPTS, fn) }
    

    I shall leave other command line operations, as they say, as an exercise for the reader! You get the idea.

    (NB: I had to invent a fictional -x parameter to demo passing a value after a flag.)

    Update: I should have explained that this will leave ARGV as an array of filenames, assuming that the user has entered any.

    0 讨论(0)
提交回复
热议问题