Module: Ni::Help::ClassMethods

Defined in:
lib/ni/help.rb

Instance Method Summary collapse

Instance Method Details

#desc(description) ⇒ Object



52
53
54
# File 'lib/ni/help.rb', line 52

def desc(description)
  @__ni_desription = description
end

#descriptionObject



56
57
58
# File 'lib/ni/help.rb', line 56

def description
  @__ni_desription
end

#help(action = :perform, indent = 0) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# 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) ⇒ Object



60
61
62
# File 'lib/ni/help.rb', line 60

def title(title=nil)
  @__ni_title ||= title
end

#title!Object



64
65
66
# File 'lib/ni/help.rb', line 64

def title!
  @__ni_title || raise("The title is required for #{self.name}")
end