module Ni::Help::ClassMethods

Public Instance Methods

desc(description) click to toggle source
# File lib/ni/help.rb, line 52
def desc(description)
  @__ni_desription = description
end
description() click to toggle source
# File lib/ni/help.rb, line 56
def description
  @__ni_desription
end
help(action=:perform, indent=0) click to toggle source
# File lib/ni/help.rb, line 8
def help(action=:perform, indent=0)
  disp = -> (str) { puts '' * indent + str }

  disp "#{'Interactor'.bold} #{('='*15).bold}> #{self.class.name.colorize(:blue)} <#{('='*15).bold} "
  disp "#{'Description'.bold}: #{self.class.description}"
  disp "#{'Pefrormed Action'.bold}: #{action.to_s.colorize(:green)} - #{self.class.defined_actions[:action].description.to_s.colorize(:green)}"

  disp ''

  if self.respond_to?(:select_contracts_for_action, true)
    disp 'Input parameters:'.bold
    select_contracts_for_action(self.class.pop_contracts, action).each do |name, contract|
      disp "#{name.to_s.bold.yellow} - #{contract[:description] || 'No description'}"
    end
    disp ''

    disp 'Mutated parameters:'.bold
    select_contracts_for_action(self.class.mutate_contracts, action).each do |name, contract|
      disp "#{name.to_s.bold.yellow} - #{contract[:description] || 'No description'}"
    end
    disp ''

    disp 'Output parameters:'.bold
    select_contracts_for_action(self.class.push_contracts, action).each do |name, contract|
      disp "#{name.to_s.bold.yellow} - #{contract[:description] || 'No description'}"
    end
    disp ''
  end

  defined_actions[name].units.each do |unit|
    if unit.is_a?(Proc)
      disp 'Proc body, can not read'
    elsif unit.is_a?(Array)
      disp 'Call another interator in chain'
      unit.first.help(unit.last, (indent + 1) * 2)
    elsif unit.is_a?(Symbol)
      disp "Call method #{unit}. Source can't be read"
    else
      disp 'Call another interator in chain'
      unit.help(:perform, (indent + 1) * 2)
    end
  end
end
title(title=nil) click to toggle source
# File lib/ni/help.rb, line 60
def title(title=nil)
  @__ni_title ||= title
end
title!() click to toggle source
# File lib/ni/help.rb, line 64
def title!
  @__ni_title || raise("The title is required for #{self.name}")
end