mirror of
https://github.com/bolucat/Archive.git
synced 2025-09-26 20:21:35 +08:00
55 lines
1.2 KiB
Go
55 lines
1.2 KiB
Go
package lib
|
|
|
|
import (
|
|
"fmt"
|
|
"sort"
|
|
"strings"
|
|
)
|
|
|
|
var (
|
|
inputConverterMap = make(map[string]InputConverter)
|
|
outputConverterMap = make(map[string]OutputConverter)
|
|
)
|
|
|
|
func ListInputConverter() {
|
|
fmt.Println("All available input formats:")
|
|
keys := make([]string, 0, len(inputConverterMap))
|
|
for name := range inputConverterMap {
|
|
keys = append(keys, name)
|
|
}
|
|
sort.Strings(keys)
|
|
for _, name := range keys {
|
|
fmt.Printf(" - %s (%s)\n", name, inputConverterMap[name].GetDescription())
|
|
}
|
|
}
|
|
|
|
func RegisterInputConverter(name string, c InputConverter) error {
|
|
name = strings.TrimSpace(name)
|
|
if _, ok := inputConverterMap[name]; ok {
|
|
return ErrDuplicatedConverter
|
|
}
|
|
inputConverterMap[name] = c
|
|
return nil
|
|
}
|
|
|
|
func ListOutputConverter() {
|
|
fmt.Println("All available output formats:")
|
|
keys := make([]string, 0, len(outputConverterMap))
|
|
for name := range outputConverterMap {
|
|
keys = append(keys, name)
|
|
}
|
|
sort.Strings(keys)
|
|
for _, name := range keys {
|
|
fmt.Printf(" - %s (%s)\n", name, outputConverterMap[name].GetDescription())
|
|
}
|
|
}
|
|
|
|
func RegisterOutputConverter(name string, c OutputConverter) error {
|
|
name = strings.TrimSpace(name)
|
|
if _, ok := outputConverterMap[name]; ok {
|
|
return ErrDuplicatedConverter
|
|
}
|
|
outputConverterMap[name] = c
|
|
return nil
|
|
}
|