|
- 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"
- "unicode"
- )
-
- 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 {
- Owner string
- Dims dimensions.Dimensions
- Panel string
- }
-
- type request struct {
- dimensions dimensions.Dimensions
- panel string
- owner 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,
- panel: req.Panel,
- lines: make(map[util.ID]path.Path),
- points: make(map[util.ID]point.Point),
- owner: req.Owner,
- }
-
- 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
- }
-
- text, err := t.createInformation(r)
- if err != nil {
- return panel.Panel{}, err
- }
-
- result.Texts = append(result.Texts, text)
-
- return result, nil
- }
-
- func startCase(text string) string {
- output := make([]rune, len(text))
-
- for i, val := range text {
- switch {
- case i == 0:
- output[i] = unicode.ToUpper(val)
- case val == '_':
- output[i] = ' '
- case output[i-1] == ' ':
- output[i] = unicode.ToUpper(val)
- default:
- output[i] = val
- }
- }
-
- return string(output)
- }
|