Sha256: 56a92afea1bed681636effd7edac2c63032e34f3cdab5bd8fc2ed1ba49c95211

Contents?: true

Size: 567 Bytes

Versions: 1

Compression:

Stored size: 567 Bytes

Contents

require 'applause/parser'

module Applause
  class Runner
    attr_reader :args, :options, :parser

    def initialize(args:, options:, parser: Parser.new)
      @args    = args
      @options = options
      @parser  = parser
    end

    def run
      run_options(args_list)
    end

    private

    def args_list
      parser.parse(args, options.keys)
    end

    def run_options(args_list)
      args_list.each &run_block
    end

    def run_block
      lambda do |item|
        head, *tail = item
        options[head].call(*tail)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
applause-0.1.0 lib/applause/runner.rb