Module: Hecks::Forms::IndexRenderer

Defined in:
lib/hecks/forms/index_renderer.rb

Overview

The home page: every exposed chapter, every aggregate on it — the entry point into what would otherwise be a URL you'd have to already know. chapters is {domain_name => Bluebook}, in expose order (see config.rb).

Class Method Summary collapse

Class Method Details

.chapter_section(name, chapter) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/hecks/forms/index_renderer.rb', line 18

def self.chapter_section(name, chapter)
  items = chapter.aggregates.map do |aggregate|
    counts = "#{aggregate.commands.size} command#{'s' unless aggregate.commands.size == 1}, " \
             "#{aggregate.queries.size} quer#{aggregate.queries.size == 1 ? 'y' : 'ies'}"
    <<~HTML
      <li><a href="/#{Escape.attr(name)}/#{Escape.attr(aggregate.hecks_name)}.html">
        <span>#{Escape.html(aggregate.hecks_name)}</span><span class="kind">#{Escape.html(counts)}</span>
      </a></li>
    HTML
  end
  <<~HTML
    <h2>#{Escape.html(name)}#{chapter.vision ? %( <span class="badge">#{Escape.html(chapter.vision)}</span>) : ''}</h2>
    <ul class="verb-list">#{items.join}</ul>
  HTML
end

.render(chapters) ⇒ Object



10
11
12
13
14
15
16
# File 'lib/hecks/forms/index_renderer.rb', line 10

def self.render(chapters)
  sections = chapters.map { |name, chapter| chapter_section(name, chapter) }
  <<~HTML
    <h1>Exposed domains</h1>
    #{sections.join}
  HTML
end