module Adr # Renders templates/adr.md by substituting {{key}} placeholders. # Arrays render as YAML flow sequences; missing keys render empty. class Template def initialize(path:) @path = path end def render(values) File.read(@path).gsub(/\{\{(\w+)\}\}/) do format_value(values[Regexp.last_match(1).to_sym]) end.gsub(/ +$/, "") end private def format_value(value) case value when nil then "" when Array then "[#{value.join(', ')}]" else value.to_s end end end end