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

Function parseSimpleId

pkg/wshrpc/wshserver/resolvers.go:37–79  ·  view source on GitHub ↗

First function: detect/choose discriminator

(simpleId string)

Source from the content-addressed store, hash-verified

35
36// First function: detect/choose discriminator
37func parseSimpleId(simpleId string) (discriminator string, value string, err error) {
38 // Check for explicit discriminator with @
39 if parts := strings.SplitN(simpleId, "@", 2); len(parts) == 2 {
40 return parts[0], parts[1], nil
41 }
42
43 // Handle special keywords
44 if simpleId == SimpleId_This || simpleId == SimpleId_Block || simpleId == SimpleId_Tab ||
45 simpleId == SimpleId_Ws || simpleId == SimpleId_Workspace ||
46 simpleId == SimpleId_Client || simpleId == SimpleId_Global || simpleId == SimpleId_Temp {
47 return "this", simpleId, nil
48 }
49
50 // Check if it's a simple ORef (type:uuid)
51 if _, err := waveobj.ParseORef(simpleId); err == nil {
52 return "oref", simpleId, nil
53 }
54
55 // Check for tab:N format
56 if simpleTabNumRe.MatchString(simpleId) {
57 return "tabnum", simpleId, nil
58 }
59
60 // check for [view]:N format
61 if viewBlockRe.MatchString(simpleId) {
62 return "view", simpleId, nil
63 }
64
65 // Check for plain number (block reference)
66 if _, err := strconv.Atoi(simpleId); err == nil {
67 return "blocknum", simpleId, nil
68 }
69
70 // Check for UUIDs
71 if _, err := uuid.Parse(simpleId); err == nil {
72 return "uuid", simpleId, nil
73 }
74 if shortUUIDRe.MatchString(strings.ToLower(simpleId)) {
75 return "uuid8", simpleId, nil
76 }
77
78 return "", "", fmt.Errorf("invalid simple id format: %s", simpleId)
79}
80
81// Individual resolvers
82func resolveThis(ctx context.Context, data wshrpc.CommandResolveIdsData, value string) (*waveobj.ORef, error) {

Callers 1

resolveSimpleIdFunction · 0.85

Calls 2

ParseORefFunction · 0.92
ParseMethod · 0.80

Tested by

no test coverage detected