|
- package template
-
- import (
- "git.wtrh.nl/patterns/gopatterns/pkg/dimensions"
- "git.wtrh.nl/patterns/gopatterns/pkg/path"
- "git.wtrh.nl/patterns/gopatterns/pkg/pattern/panel"
- "git.wtrh.nl/patterns/gopatterns/pkg/point"
- "git.wtrh.nl/patterns/gopatterns/pkg/util"
- )
-
- type Template struct {
- Name string `yaml:"name"`
- Points Points `yaml:"points"`
- Lines Lines `yaml:"lines"`
- Panels Panels `yaml:"panels"`
- Version string `yaml:"version"`
- }
-
- type Request struct {
- Dims dimensions.Dimensions
- Panel string
- }
-
- type request struct {
- dimensions dimensions.Dimensions
- name string
- lines map[util.ID]path.Path
- points map[util.ID]point.Point
- }
-
- func (t Template) GetPanel(req Request) (panel.Panel, error) {
- p, ok := t.Panels[req.Panel]
- if !ok {
- return panel.Panel{}, ErrPanelNotFound
- }
-
- r := request{
- dimensions: req.Dims,
- name: req.Panel,
- lines: make(map[util.ID]path.Path),
- points: make(map[util.ID]point.Point),
- }
-
- result := panel.Panel{
- Name: req.Panel,
- Lines: make(map[util.ID]path.Path),
- Points: make(map[util.ID]point.Point),
- Dimensions: req.Dims,
- }
-
- for id := range p.Lines {
- line, err := t.getOrCreateLine(id, r, 0)
- if err != nil {
- return panel.Panel{}, err
- }
-
- result.Lines[id] = line
- }
-
- for id := range p.Points {
- newPoint, err := t.getOrCreatePoint(id, r, 0)
- if err != nil {
- return panel.Panel{}, err
- }
-
- result.Points[id] = newPoint
- }
-
- for id := range t.Points {
- newPoint, err := t.getOrCreatePoint(id, r, 0)
- if err != nil {
- return panel.Panel{}, err
- }
-
- result.Points[id] = newPoint
- }
-
- return result, nil
- }
|