MCPcopy Create free account
hub / github.com/rilldata/rill / parseCanvasInlineComponent

Method parseCanvasInlineComponent

runtime/parser/parse_canvas.go:310–348  ·  view source on GitHub ↗

parseCanvasInlineComponent parses an inline component definition in a canvas item.

(canvasName string, rowIdx, itemIdx int, props map[string]yaml.Node)

Source from the content-addressed store, hash-verified

308
309// parseCanvasInlineComponent parses an inline component definition in a canvas item.
310func (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
350type componentDef struct {
351 name string

Callers 1

parseCanvasMethod · 0.95

Calls 5

parseComponentYAMLMethod · 0.95
insertDryRunMethod · 0.95
EncodeMethod · 0.80
ErrorfMethod · 0.65
DecodeMethod · 0.45

Tested by

no test coverage detected