Module: GitFit::LLM::Template
- Defined in:
- lib/git_fit/llm/template.rb
Overview
{slot} renderer for prompt templates. Unknown or leftover slots fail fast — never ship a half-rendered prompt.
Defined Under Namespace
Classes: UnknownSlotError
Constant Summary collapse
- SLOT_PATTERN =
/\{\{\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\}\}/
Class Method Summary collapse
-
.render(text, slots) ⇒ Object
Renders {slot} placeholders.
Class Method Details
.render(text, slots) ⇒ Object
Renders {slot} placeholders. Values are coerced with to_s. Raises UnknownSlotError for slots without a provided value and for slots that appear in the output after substitution (data-injected placeholders are treated as a bug, not passed through).
24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/git_fit/llm/template.rb', line 24 def self.render(text, slots) rendered = text.gsub(SLOT_PATTERN) do name = Regexp.last_match(1) raise UnknownSlotError.new(name, slots.keys.sort) unless slots.key?(name) slots[name].to_s end leftover = rendered.match(SLOT_PATTERN) return rendered unless leftover raise UnknownSlotError.new(leftover[1], slots.keys.sort) end |