parseCanvasInlineComponent parses an inline component definition in a canvas item.
(canvasName string, rowIdx, itemIdx int, props map[string]yaml.Node)
| 308 | |
| 309 | // parseCanvasInlineComponent parses an inline component definition in a canvas item. |
| 310 | func (p *Parser) parseCanvasInlineComponent(canvasName string, rowIdx, itemIdx int, props map[string]yaml.Node) (string, *componentDef, error) { |
| 311 | var n yaml.Node |
| 312 | err := n.Encode(props) |
| 313 | if err != nil { |
| 314 | return "", nil, fmt.Errorf("invalid component for item %d in row %d: %w", itemIdx, rowIdx, err) |
| 315 | } |
| 316 | |
| 317 | tmp := &ComponentYAML{} |
| 318 | err = n.Decode(tmp) |
| 319 | if err != nil { |
| 320 | return "", nil, err |
| 321 | } |
| 322 | |
| 323 | spec, refs, err := p.parseComponentYAML(tmp) |
| 324 | if err != nil { |
| 325 | return "", nil, err |
| 326 | } |
| 327 | |
| 328 | spec.DefinedInCanvas = true |
| 329 | |
| 330 | name := fmt.Sprintf("%s--component-%d-%d", canvasName, rowIdx, itemIdx) |
| 331 | |
| 332 | err = p.insertDryRun(ResourceKindComponent, name) |
| 333 | if err != nil { |
| 334 | name = fmt.Sprintf("%s--component-%d-%d-%s", canvasName, rowIdx, itemIdx, uuid.New()) |
| 335 | err = p.insertDryRun(ResourceKindComponent, name) |
| 336 | if err != nil { |
| 337 | return "", nil, err |
| 338 | } |
| 339 | } |
| 340 | |
| 341 | def := &componentDef{ |
| 342 | name: name, |
| 343 | refs: refs, |
| 344 | spec: spec, |
| 345 | } |
| 346 | |
| 347 | return name, def, nil |
| 348 | } |
| 349 | |
| 350 | type componentDef struct { |
| 351 | name string |
no test coverage detected