MCPcopy Index your code
hub / github.com/coder/guts / SerializeInOrder

Method SerializeInOrder

convert.go:478–530  ·  view source on GitHub ↗
(sort func(nodes map[string]bindings.Node) []bindings.Node)

Source from the content-addressed store, hash-verified

476}
477
478func (ts *Typescript) SerializeInOrder(sort func(nodes map[string]bindings.Node) []bindings.Node) (string, error) {
479 if ts.serialized {
480 return "", fmt.Errorf("already serialized, create a new TS object to serialize again")
481 }
482 // Even if it fails, do not allow calling this function again.
483 ts.serialized = true
484
485 vm, err := bindings.New()
486 if err != nil {
487 return "", fmt.Errorf("failed to create typescript bindings: %w", err)
488 }
489
490 nodes := make(map[string]bindings.Node)
491 for k, v := range ts.typescriptNodes {
492 nodes[k] = v.Node
493 }
494 order := sort(nodes)
495
496 var str strings.Builder
497 str.WriteString("// Code generated by 'guts'. DO NOT EDIT.\n\n")
498
499 ts.sortImports()
500 for _, imp := range ts.imports {
501 obj, err := vm.ToTypescriptNode(imp)
502 if err != nil {
503 return "", fmt.Errorf("convert import %q: %w", imp.Module, err)
504 }
505
506 text, err := vm.SerializeToTypescript(obj)
507 if err != nil {
508 return "", fmt.Errorf("serialize import %q: %w", imp.Module, err)
509 }
510 str.WriteString(text + "\n")
511 }
512 if len(ts.imports) > 0 {
513 str.WriteString("\n")
514 }
515
516 for k, v := range order {
517 obj, err := vm.ToTypescriptNode(v)
518 if err != nil {
519 return "", fmt.Errorf("convert node %q: %w", k, err)
520 }
521
522 text, err := vm.SerializeToTypescript(obj)
523 if err != nil {
524 return "", fmt.Errorf("serialize to typescript: %w", err)
525 }
526 str.WriteString(text + "\n\n")
527 }
528 return str.String(), nil
529
530}
531
532func (ts *Typescript) parse(obj types.Object) error {
533 objectIdentifier := ts.parsed.Identifier(obj)

Callers 1

SerializeMethod · 0.95

Calls 5

sortImportsMethod · 0.95
NewFunction · 0.92
ToTypescriptNodeMethod · 0.80
SerializeToTypescriptMethod · 0.80
StringMethod · 0.45

Tested by

no test coverage detected