Sha256: f63caf17792cb41de5b17e3b0811e585c31ea3652a29da5979411f499270b680

Contents?: true

Size: 1.1 KB

Versions: 1

Compression:

Stored size: 1.1 KB

Contents

module Staticme

  module Arguments

    ARGS  = {
      :path   => {
        :short      => 'f',
        :default    => Proc.new { Dir.pwd }
      },
      :port   => {
        :short    => 'p',
        :default    => 8080,
        :sanitizer  => Proc.new { |v| v.to_i }
      },
      :host   => {
        :short      => 'h',
        :default    => '0.0.0.0'
      },
      :index  => {
        :short      => 'i',
        :default    => 'index.html'
      }
    }

    def parse_input(argv)
      params = Hash.new
      
      ARGS.each_pair do |param_name, param_attrs|
        param_shorten_name = param_attrs[:shorten]
        default = param_attrs[:default]
        sanitizer = param_attrs[:sanitizer]
        param_value = argv["--#{param_name}"] ||
                      ( param_shorten_name.nil? ? nil : argv["-#{param_shorten_name}"] ) ||
                      ( default.is_a?(Proc) ? default.call : default )
        ( param_value = sanitizer.call( param_value ) ) if sanitizer.is_a? Proc

        if !param_value.nil?
          params[param_name] = param_value
        end
      end

      params
    end

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
staticme-0.2.0 lib/staticme/arguments.rb