-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLoader.go
More file actions
43 lines (29 loc) · 877 Bytes
/
Loader.go
File metadata and controls
43 lines (29 loc) · 877 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package main
import (
"github.com/ftcjeff/ConfigurationProcessor/logger"
"github.com/ftcjeff/ConfigurationProcessor/types"
"github.com/ftcjeff/ConfigurationProcessor/loaders"
)
func Loader() (types.ModelType, error) {
defer logger.Trace(logger.Enter())
var model types.ModelType
definition := loaders.DefinitionLoader()
model.Definition = definition
model = loadAllElements(model)
return model, nil
}
func loadAllElements(model types.ModelType) types.ModelType {
defer logger.Trace(logger.Enter())
definition := model.Definition
elements := definition.Elements
elementChannel := make(chan types.ElementChannel, len(elements))
for k, v := range elements {
go loaders.ElementLoader(k, v.File, elementChannel)
}
for i := 0; i < len(elements); i++ {
elem := <-elementChannel
idx := elem.Id
elements[idx].Data = elem.Element
}
return model
}