Module: Thor::Base::CommonClassOptions

Included in:
ClassMethods
Defined in:
lib/thor/base/common_class_options.rb

Overview

Mixin that provides “macros” for including common class options.

Constant Summary collapse

@@messages =
Concurrent::Hash.new

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.define(name, *args, &block) ⇒ Object



32
33
34
35
# File 'lib/thor/base/common_class_options.rb', line 32

def self.define name, *args, &block
  @@messages[name.to_sym] = \
    NRSER::Message.new :class_option, name, *args, &block
end

Instance Method Details

#common_class_options(*names) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/thor/base/common_class_options.rb', line 48

def common_class_options *names
  messages = Hamster::Hash.new @@messages
  
  names.map( &:to_sym ).each do |name|
    unless messages.key? name
      raise KeyError,
        "No common class option named #{ name }"
    end
    
    messages[name].send_to self
  end
end