add registries for parsers/renderers

This commit is contained in:
Devon Rifkin
2025-10-14 01:13:54 -07:00
parent 05982a95cb
commit ddaca643d0
5 changed files with 222 additions and 4 deletions

View File

@@ -16,7 +16,28 @@ type Parser interface {
HasThinkingSupport() bool
}
type ParserConstructor func() Parser
type ParserRegistry struct {
constructors map[string]ParserConstructor
}
func (r *ParserRegistry) Register(name string, constructor ParserConstructor) {
r.constructors[name] = constructor
}
var registry = ParserRegistry{
constructors: make(map[string]ParserConstructor),
}
func Register(name string, constructor ParserConstructor) {
registry.Register(name, constructor)
}
func ParserForName(name string) Parser {
if parser, ok := registry.constructors[name]; ok {
return parser()
}
switch name {
case "qwen3-coder":
parser := &Qwen3CoderParser{}