Class: AIA::Directive

Inherits:
PM::Directive
  • Object
show all
Defined in:
lib/aia/directive.rb

Constant Summary collapse

DIRECTIVE_PREFIX =
'/'

Class Method Summary collapse

Class Method Details

.build_dispatch_block(inst, method_name) ⇒ Object

—- Dispatch override ———————————————— AIA directive methods use (args_array, context_manager) convention, not (ctx, *args). Override build_dispatch_block to adapt.



44
45
46
# File 'lib/aia/directive.rb', line 44

def build_dispatch_block(inst, method_name)
  proc { |_ctx, *args| inst.send(method_name, Array(args).flatten, nil) }
end

.helpObject

—- Help output —————————————————— Application-level concern: formats help text using DIRECTIVE_PREFIX and all registered directive subclasses.



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/aia/directive.rb', line 52

def help
  puts
  puts "Available Directives"
  puts "===================="
  puts

  total = 0

  PM::Directive.directive_subclasses.each do |klass|
    next if klass.directive_descriptions.empty?

    cat = klass.category_name
    puts "#{cat}:"
    puts "-" * cat.length

    klass.directive_descriptions.each do |method_name, description|
      aliases    = klass.directive_aliases[method_name] || []
      alias_text = if aliases.any?
                     " (aliases: #{aliases.map { |a| "#{DIRECTIVE_PREFIX}#{a}" }.join(', ')})"
                   else
                     ""
                   end

      puts "  #{DIRECTIVE_PREFIX}#{method_name}#{alias_text}"
      puts "      #{description}"
      puts

      total += 1
    end
  end

  puts "\nTotal: #{total} directives available"
  ""
end