Sha256: 9f189653d7f2bafc586404cc07c2bfed10c55b8f4fa40fd40e9d7d5b48332ab5

Contents?: true

Size: 1.3 KB

Versions: 7

Compression:

Stored size: 1.3 KB

Contents

# encoding: UTF-8
# frozen_string_literal: true

# Requirements
# =======================================================================

# Deps
# -----------------------------------------------------------------------
require 'nrser'


# Refinements
# =======================================================================

require 'nrser/refinements/types'
using NRSER::Types

# Declarations
# =======================================================================

module Thor::Base; end


# Definitions
# =======================================================================

# Mixin that provides "macros" for including common class options.
# 
module Thor::Base::CommonClassOptions
  @@messages = Concurrent::Hash.new
  
  def self.define name, *args, &block
    @@messages[name.to_sym] = \
      NRSER::Message.new :class_option, name, *args, &block
  end
  
  
  define  :backtrace,
          desc: "Print stack traces with error messages",
          type: :boolean
  
  
  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
  
end # module Thor::Base::CommonClassOptions

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
atli-0.1.12 lib/thor/base/common_class_options.rb
atli-0.1.11 lib/thor/base/common_class_options.rb
atli-0.1.10 lib/thor/base/common_class_options.rb
atli-0.1.9 lib/thor/base/common_class_options.rb
atli-0.1.8 lib/thor/base/common_class_options.rb
atli-0.1.7 lib/thor/base/common_class_options.rb
atli-0.1.6 lib/thor/base/common_class_options.rb