mirror of
https://github.com/krau/SaveAny-Bot.git
synced 2026-09-07 08:36:36 +08:00
44 lines
833 B
Go
44 lines
833 B
Go
package parsers
|
|
|
|
import (
|
|
"fmt"
|
|
"sync"
|
|
|
|
"github.com/krau/SaveAny-Bot/config"
|
|
"github.com/krau/SaveAny-Bot/pkg/parser"
|
|
)
|
|
|
|
var (
|
|
parsers []parser.Parser
|
|
mu sync.Mutex
|
|
configOnce sync.Once
|
|
configParsers = func() {
|
|
mu.Lock()
|
|
defer mu.Unlock()
|
|
if len(parsers) == 0 {
|
|
return
|
|
}
|
|
for _, pser := range parsers {
|
|
if configurable, ok := pser.(parser.ConfigurableParser); ok {
|
|
cfg := config.C().GetParserConfigByName(configurable.Name())
|
|
if err := configurable.Configure(cfg); err != nil {
|
|
fmt.Printf("Error configuring parser %s: %v\n", configurable.Name(), err)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
)
|
|
|
|
func Add(p ...parser.Parser) {
|
|
mu.Lock()
|
|
defer mu.Unlock()
|
|
parsers = append(parsers, p...)
|
|
}
|
|
|
|
func Get() []parser.Parser {
|
|
configOnce.Do(configParsers)
|
|
mu.Lock()
|
|
defer mu.Unlock()
|
|
return parsers
|
|
}
|