LSP-server-example

Форк
0
48 строк · 1.1 Кб
1
// Copyright 2023 The Go Authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style
3
// license that can be found in the LICENSE file.
4
package protocol
5

6
import (
7
	"path/filepath"
8
	"strings"
9
)
10

11
// InDir checks whether path is in the file tree rooted at dir.
12
// It checks only the lexical form of the file names.
13
// It does not consider symbolic links.
14
//
15
// Copied from go/src/cmd/go/internal/search/search.go.
16
func InDir(dir, path string) bool {
17
	pv := strings.ToUpper(filepath.VolumeName(path))
18
	dv := strings.ToUpper(filepath.VolumeName(dir))
19
	path = path[len(pv):]
20
	dir = dir[len(dv):]
21
	switch {
22
	default:
23
		return false
24
	case pv != dv:
25
		return false
26
	case len(path) == len(dir):
27
		if path == dir {
28
			return true
29
		}
30
		return false
31
	case dir == "":
32
		return path != ""
33
	case len(path) > len(dir):
34
		if dir[len(dir)-1] == filepath.Separator {
35
			if path[:len(dir)] == dir {
36
				return path[len(dir):] != ""
37
			}
38
			return false
39
		}
40
		if path[len(dir)] == filepath.Separator && path[:len(dir)] == dir {
41
			if len(path) == len(dir)+1 {
42
				return true
43
			}
44
			return path[len(dir)+1:] != ""
45
		}
46
		return false
47
	}
48
}
49

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.