Skip to content

Commit 883e027

Browse files
authored
Merge pull request #4 from symflower/register-pattern
Use convenience functions to register languages and models
2 parents b0c59b4 + 43909f9 commit 883e027

File tree

4 files changed

+30
-4
lines changed

4 files changed

+30
-4
lines changed

language/golang.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@ import (
1515
type LanguageGolang struct{}
1616

1717
func init() {
18-
l := &LanguageGolang{}
19-
Languages[l.ID()] = l
18+
Register(&LanguageGolang{})
2019
}
2120

2221
var _ Language = (*LanguageGolang)(nil)

language/language.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package language
22

3+
import (
4+
pkgerrors "github.com/pkg/errors"
5+
)
6+
37
// Language defines a language to evaluate a repository.
48
type Language interface {
59
// ID returns the unique ID of this language.
@@ -14,3 +18,13 @@ type Language interface {
1418

1519
// Languages holds a register of all languages.
1620
var Languages = map[string]Language{}
21+
22+
// Register adds a language to the common language list.
23+
func Register(language Language) {
24+
id := language.ID()
25+
if _, ok := Languages[id]; ok {
26+
panic(pkgerrors.WithMessage(pkgerrors.New("language was already registered"), id))
27+
}
28+
29+
Languages[id] = language
30+
}

model/model.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package model
22

3+
import (
4+
pkgerrors "github.com/pkg/errors"
5+
)
6+
37
// Model defines a model that can be queried for generations.
48
type Model interface {
59
// ID returns the unique ID of this model.
@@ -11,3 +15,13 @@ type Model interface {
1115

1216
// Models holds a register of all models.
1317
var Models = map[string]Model{}
18+
19+
// Register adds a model to the common model list.
20+
func Register(model Model) {
21+
id := model.ID()
22+
if _, ok := Models[id]; ok {
23+
panic(pkgerrors.WithMessage(pkgerrors.New("model was already registered"), id))
24+
}
25+
26+
Models[id] = model
27+
}

model/symflower.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ import (
1010
type ModelSymflower struct{}
1111

1212
func init() {
13-
m := &ModelSymflower{}
14-
Models[m.ID()] = m
13+
Register(&ModelSymflower{})
1514
}
1615

1716
var _ Model = (*ModelSymflower)(nil)

0 commit comments

Comments
 (0)