MCPcopy Create free account
hub / github.com/docker/docker-language-server / hover

Function hover

internal/compose/hover.go:266–393  ·  view source on GitHub ↗
(schema *jsonschema.Schema, nodes []ast.Node, line, column, lineLength int)

Source from the content-addressed store, hash-verified

264}
265
266func hover(schema *jsonschema.Schema, nodes []ast.Node, line, column, lineLength int) *protocol.Hover {
267 for _, match := range nodes {
268 if schema.Ref != nil {
269 schema = schema.Ref
270 }
271
272 if nested, ok := schema.Items.(*jsonschema.Schema); ok {
273 if nested.Ref != nil {
274 nested = nested.Ref
275 }
276 for _, n := range nested.OneOf {
277 if n.Types != nil && slices.Contains(n.Types.ToStrings(), "object") {
278 if len(n.Properties) > 0 {
279 if _, ok := n.Properties[match.GetToken().Value]; ok {
280 schema = n
281 break
282 }
283 }
284 }
285 }
286
287 if _, ok := nested.Properties[match.GetToken().Value]; ok {
288 schema = nested
289 }
290 }
291
292 for _, nested := range schema.OneOf {
293 if nested.Types != nil && slices.Contains(nested.Types.ToStrings(), "object") {
294 schema = nested
295 break
296 }
297 }
298
299 if property, ok := schema.Properties[match.GetToken().Value]; ok {
300 if property.Ref != nil {
301 property = property.Ref
302 }
303 if property.Enum != nil {
304 if match.GetToken().Position.Column <= column && column <= lineLength {
305 var builder strings.Builder
306 if property.Description != "" {
307 builder.WriteString(property.Description)
308 builder.WriteString("\n\n")
309 }
310 builder.WriteString("Allowed values:\n")
311 enumValues := []string{}
312 for _, value := range property.Enum.Values {
313 enumValues = append(enumValues, fmt.Sprintf("%v", value))
314 }
315 slices.Sort(enumValues)
316 for _, value := range enumValues {
317 builder.WriteString(fmt.Sprintf("- `%v`\n", value))
318 }
319 builder.WriteString("\nSchema: [compose-spec.json](https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json)")
320 builder.WriteString(fmt.Sprintf(
321 "\n\n[Online documentation](https://docs.docker.com/reference/compose-file/%v/#%v)",
322 nodes[0].GetToken().Value,
323 nodes[2].GetToken().Value,

Callers 1

HoverFunction · 0.85

Calls 1

StringMethod · 0.80

Tested by

no test coverage detected