2014-11-23 2 views
0

기본값을 정의하는 다른 함수에서 OptionParser를 래핑하고 배너를 덮어 쓰고 구분 기호를 추가하고 새 옵션을 추가 할 수 있습니다. 관련 정보를 on 메서드에 전달하는 데 어려움을 겪고 있습니다.메서드에서 OptionParser에 사용할 전달 블록을

라인 수정 방법에 대한 조언은 options.each { |o, p| opts.on(o, &p) }입니까?

def my_opts (banner: "Usage: ruby #{File::basename($0)} [options]", separators: [], options: {}) 
    option_parser = OptionParser.new do |opts| 
     opts.banner = banner 
     separators.each {|s| opts.separator s } 
     opts.separator '' 
     opts.separator 'Options:' 
     opts.on('-u', '--user USER', 'Username for authentication.') { |user| @user = user } 
     options.each { |o, p| opts.on(o, &p) } 
     opts.on_tail('--help', 'Print this help message.') { puts opts; exit } 
    end 
    return option_parser 
end 

opts = {['-f', '--file FILE', 'File to read']=>Proc.new { |f| @f=file } } 
stdopts = my_opts(options: opts) 

답변

0

HA! 알아 냈어! 문제의 라인은 다음과 같아야합니다 : options.each { |o,p| opts.on(*o, &p) }

관련 문제