1
0
mirror of https://github.com/osmarks/mycorrhiza.git synced 2025-02-08 07:00:12 +00:00
mycorrhiza/interwiki/interwiki.go

51 lines
1.0 KiB
Go
Raw Normal View History

2022-05-22 12:25:22 +03:00
// Package interwiki provides interwiki capabilities. Most of them, at least.
package interwiki
import (
"encoding/json"
"github.com/bouncepaw/mycorrhiza/files"
"log"
"os"
)
func Init() {
var (
record, err = readInterwiki()
)
if err != nil {
log.Fatalln(err)
}
for _, wiki := range record {
wiki := wiki // This line is required
2022-05-22 12:25:22 +03:00
wiki.canonize()
theMap.list = append(theMap.list, &wiki)
for _, prefix := range wiki.Names {
if _, found := theMap.byName[prefix]; found {
2022-05-24 18:59:18 +03:00
log.Fatalf("There are multiple uses of the same prefix %s\n", prefix)
2022-05-22 12:25:22 +03:00
} else {
theMap.byName[prefix] = &wiki
}
}
}
log.Printf("Loaded %d interwiki entries\n", len(theMap.list))
}
func readInterwiki() ([]Wiki, error) {
var (
record []Wiki
fileContents, err = os.ReadFile(files.InterwikiJSON())
)
if os.IsNotExist(err) {
return record, nil
}
if err != nil {
return nil, err
}
err = json.Unmarshal(fileContents, &record)
if err != nil {
return nil, err
}
return record, nil
}