Sha256: 7111c1d30010877e07c136e94f0baec2d0f5476412ca6733eacf8029ed51019c
Contents?: true
Size: 1.35 KB
Versions: 1
Compression:
Stored size: 1.35 KB
Contents
require 'clamp/attribute_declaration' require 'clamp/option' module Clamp class Option module Declaration include Clamp::AttributeDeclaration def option(switches, type, description, opts = {}, &block) option = Clamp::Option.new(switches, type, description, opts) declared_options << option define_accessors_for(option, &block) end def find_option(switch) recognised_options.find { |o| o.handles?(switch) } end def declared_options @declared_options ||= [] end def recognised_options declare_implicit_options effective_options end private def declare_implicit_options return nil if @implicit_options_declared unless effective_options.find { |o| o.handles?("--help") } help_switches = ["--help"] help_switches.unshift("-h") unless effective_options.find { |o| o.handles?("-h") } option help_switches, :flag, "print help" do request_help end end @implicit_options_declared = true end def effective_options ancestors.inject([]) do |options, ancestor| if ancestor.kind_of?(Clamp::Option::Declaration) options + ancestor.declared_options else options end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
clamp-0.3.0 | lib/clamp/option/declaration.rb |