Implement artifact-level render command with Markdown output and update docs
This commit is contained in:
41
internal/render/registry.go
Normal file
41
internal/render/registry.go
Normal file
@@ -0,0 +1,41 @@
|
||||
package render
|
||||
|
||||
import "fmt"
|
||||
|
||||
const FormatMarkdown = "markdown"
|
||||
|
||||
// Options configures rendering behavior across formats.
|
||||
type Options struct {
|
||||
Title string
|
||||
IncludeTimestamps bool
|
||||
IncludeSegmentIDs bool
|
||||
IncludeMetadata bool
|
||||
}
|
||||
|
||||
// Renderer turns a normalized render model into text output.
|
||||
type Renderer interface {
|
||||
Render(transcript Transcript, opts Options) (string, error)
|
||||
}
|
||||
|
||||
// Registry resolves renderers by public format name.
|
||||
type Registry struct {
|
||||
renderers map[string]Renderer
|
||||
}
|
||||
|
||||
// NewRegistry returns a renderer registry with built-in renderers.
|
||||
func NewRegistry() Registry {
|
||||
return Registry{
|
||||
renderers: map[string]Renderer{
|
||||
FormatMarkdown: MarkdownRenderer{},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
// Resolve resolves a renderer by format name.
|
||||
func (registry Registry) Resolve(format string) (Renderer, error) {
|
||||
renderer, ok := registry.renderers[format]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("unsupported --format %q", format)
|
||||
}
|
||||
return renderer, nil
|
||||
}
|
||||
Reference in New Issue
Block a user