Class: Terret::Prompt

Inherits:
Hames::Service
  • Object
show all
Defined in:
lib/terret/loop.rb

Overview

ctx.prompt — minimal prompt assembly: priority-ordered sections rendered per step; registration is an effect.

Instance Method Summary collapse

Instance Method Details

#register_section(name, priority: 100, &block) ⇒ Object



637
638
639
640
641
642
643
# File 'lib/terret/loop.rb', line 637

def register_section(name, priority: 100, &block)
  entry = [priority, name.to_s, block]
  @ctx.effect do
    @sections << entry
    -> { @sections.delete(entry) }
  end
end

#render(env = {}) ⇒ Object



645
646
647
648
649
# File 'lib/terret/loop.rb', line 645

def render(env = {})
  @sections.sort_by { |(p, n, _)| [p, n] }
           .filter_map { |(_, _, b)| b.call(env) }
           .join("\n\n")
end

#start(ctx) ⇒ Object



632
633
634
635
# File 'lib/terret/loop.rb', line 632

def start(ctx)
  @ctx = ctx
  @sections = []
end