Class: Marko::Renderers::Metadata

Inherits:
Renderer
  • Object
show all
Defined in:
lib/marko/renderers/metadata.rb

Overview

Metadata renderer

Constant Summary

Constants inherited from Renderer

Renderer::NL, Renderer::NN

Instance Method Summary collapse

Instance Method Details

#render(topic) ⇒ 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
# File 'lib/marko/renderers/metadata.rb', line 8

def render(topic)
   = topic.
    .except(:id, :parent, :origin, :order_index)
    .then{ {id: topic.id}.merge(it) }
    
  max_key_length = .keys.map{ it.to_s.size }.max + 4
  max_val_length = .values.map{ it.to_s.size }.max
  table_starter =
    [ max_key_length, max_val_length
    ].map{ ?- * it }
     .join(?\s) 

  make_row = proc{|k, v|
    "__#{k.to_s.capitalize}__".ljust(max_key_length) + ?\s + v.to_s
  }
    
  
    .map(&make_row)
    .unshift(table_starter)  
    .unshift(": Metadata\n")
    .push(table_starter)
    .join(?\n) 
    .then{ "\n#{it}\n" }
end