Sha256: 8319717e76a768b96b8855eb1e18163258aa6da3b16cc7c99b79ea321bfbf165

Contents?: true

Size: 929 Bytes

Versions: 1

Compression:

Stored size: 929 Bytes

Contents

require 'tap/signals'

module Tap
  module Signals
    class Help < Signal
      
      def call(args)
        argv = convert_to_array(args, ['sig'])
        argv.empty? ? list : desc(*argv)
      end
      
      def list
        signals = obj.class.signals
        width = signals.keys.collect {|key| key.length }.max
        
        lines = []
        signals.each_pair do |key, signal|
          next if key.empty?
          
          desc = signal.desc.to_s
          desc = " # #{desc}" unless desc.empty?
          lines << "  /#{key.ljust(width)}#{desc}"
        end
        
        "signals: (#{obj.class})\n#{lines.join("\n")}"
      end
      
      def desc(sig)
        clas = obj.signal(sig).class
        
        if clas.respond_to?(:desc)
          desc = clas.desc
          "#{clas} -- #{desc.to_s}\n#{desc.wrap}"
        else
          "#{clas} -- no help available"
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
tap-0.19.0 lib/tap/signals/help.rb