MCPcopy
hub / github.com/wavetermdev/waveterm / partToElems

Function partToElems

pkg/vdom/vdom.go:503–552  ·  view source on GitHub ↗
(part any)

Source from the content-addressed store, hash-verified

501}
502
503func partToElems(part any) []VDomElem {
504 if part == nil {
505 return nil
506 }
507 switch part := part.(type) {
508 case string:
509 return []VDomElem{TextElem(part)}
510 case *VDomElem:
511 if part == nil {
512 return nil
513 }
514 return []VDomElem{*part}
515 case VDomElem:
516 return []VDomElem{part}
517 case []VDomElem:
518 return part
519 case []*VDomElem:
520 var rtn []VDomElem
521 for _, e := range part {
522 if e == nil {
523 continue
524 }
525 rtn = append(rtn, *e)
526 }
527 return rtn
528 }
529 sval, ok := numToString(part)
530 if ok {
531 return []VDomElem{TextElem(sval)}
532 }
533 partVal := reflect.ValueOf(part)
534 if partVal.Kind() == reflect.Slice {
535 var rtn []VDomElem
536 for i := 0; i < partVal.Len(); i++ {
537 subPart := partVal.Index(i).Interface()
538 rtn = append(rtn, partToElems(subPart)...)
539 }
540 return rtn
541 }
542 stringer, ok := part.(fmt.Stringer)
543 if ok {
544 return []VDomElem{TextElem(stringer.String())}
545 }
546 jsonStr, jsonErr := json.Marshal(part)
547 if jsonErr == nil {
548 return []VDomElem{TextElem(string(jsonStr))}
549 }
550 typeText := "invalid:" + reflect.TypeOf(part).String()
551 return []VDomElem{TextElem(typeText)}
552}
553
554func isWaveTag(tag string) bool {
555 return strings.HasPrefix(tag, "wave:") || strings.HasPrefix(tag, "w:")

Callers 4

HFunction · 0.85
EFunction · 0.85
renderComponentMethod · 0.85
BindFunction · 0.85

Calls 4

TextElemFunction · 0.85
numToStringFunction · 0.85
LenMethod · 0.80
StringMethod · 0.45

Tested by

no test coverage detected