Sha256: 453c8c9b854921a15ab3ab5190ac265c5cd905c8c9e73762cacef078adfea6fc
Contents?: true
Size: 1.35 KB
Versions: 7
Compression:
Stored size: 1.35 KB
Contents
require 'sym/app/short_name' module Sym module App module Output class Base attr_accessor :opts def initialize(opts) self.opts = opts end @outputs = [] class << self attr_accessor :outputs def append(output_klass) outputs << output_klass if outputs.is_a?(Array) raise "Cannot append #{output_class} after #outputs has been converted to a Hash" \ unless outputs.is_a?(Array) end def map_outputs! klasses = self.outputs self.outputs = Hash.new klasses.each { |k| self.outputs[k.required_option] = k } outputs end def options_to_outputs map_outputs! if outputs.is_a?(Array) outputs end end def self.inherited(klass) klass.instance_eval do class << self attr_writer :required_option end klass.required_option = nil class << self def required_option(_option = nil) self.required_option = _option if _option @required_option end end end klass.extend(Sym::App::ShortName) Sym::App::Output::Base.append klass end end end end end
Version data entries
7 entries across 7 versions & 1 rubygems