Class: Terret::Prompt
- Inherits:
-
Hames::Service
- Object
- Hames::Service
- Terret::Prompt
- 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
- #register_section(name, priority: 100, &block) ⇒ Object
- #render(env = {}) ⇒ Object
- #start(ctx) ⇒ Object
Instance Method Details
#register_section(name, priority: 100, &block) ⇒ Object
125 126 127 128 129 130 131 |
# File 'lib/terret/loop.rb', line 125 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
133 134 135 136 137 |
# File 'lib/terret/loop.rb', line 133 def render(env = {}) @sections.sort_by { |(p, n, _)| [p, n] } .filter_map { |(_, _, b)| b.call(env) } .join("\n\n") end |
#start(ctx) ⇒ Object
120 121 122 123 |
# File 'lib/terret/loop.rb', line 120 def start(ctx) @ctx = ctx @sections = [] end |