| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Общие утилиты для java-проектов команды 1c-syntax — небольшие независимые помощники, переиспользуемые в BSL Language Server и смежных проектах.
Библиотека сознательно держит минимальную замкнутость зависимостей и помечена JSpecify @NullMarked (типы считаются non-null, если не аннотированы @Nullable).
Артефакт публикуется в Maven Central под координатами io.github.1c-syntax:utils.
dependencies {
implementation("io.github.1c-syntax:utils:VERSION")
}<dependency>
<groupId>io.github.1c-syntax</groupId>
<artifactId>utils</artifactId>
<version>VERSION</version>
</dependency>Актуальную версию смотрите в релизах или на Maven Central.
| Класс | Назначение |
|---|---|
| Absolute | Приведение файловых путей и URI к каноническому абсолютному виду — стабильный ключ для одного и того же файла независимо от формы записи. |
| Lazy<T> | Потокобезопасное хранилище значения с ленивым однократным вычислением (double-checked locking) и возможностью сброса кэша. |
| GenericInterner<T> | Потокобезопасный интернер значений: один канонический экземпляр на класс эквивалентности — экономия памяти и сравнение по ссылке. |
| StringInterner | Интернер строк на базе GenericInterner, дополнительно нормализующий null в пустую строку. |
| CaseInsensitivePattern | Компиляция регулярных выражений без учёта регистра с поддержкой Unicode (важно для кириллицы кода 1С). |
Загрузчик исполняемого файла BSL Language Server из GitHub-релизов (для встраивания в IDE-плагины и другие клиенты).
| Класс | Назначение |
|---|---|
| BslLanguageServerDownloader | Скачивает подходящий под ОС ассет последнего релиза, распаковывает его и отдаёт путь к бинарю; кэширует установленную версию и опрашивает GitHub не чаще заданного интервала. |
| GitHubReleaseClient | Находит последний релиз выбранного канала через GitHub REST API (на java.net.http.HttpClient + gson, без клиентских библиотек GitHub). |
| BslLanguageServerReleaseChannel | Канал релизов: STABLE или PRERELEASE. |
| DownloadProgressListener | Слушатель прогресса скачивания ассета. |
Каноникализация пути и URI:
Path path = Absolute.path("./src/../build/out.txt"); // абсолютный канонический путь
URI uri = Absolute.uri("file:///C:/Program%20Files/app"); // нормализованный file:-URIЛенивое вычисление:
Lazy<List<String>> lines = new Lazy<>(() -> readAllLines(file));
List<String> value = lines.getOrCompute(); // вычислится один раз и закэшируется
lines.clear(); // сбросить кэшИнтернирование:
StringInterner interner = new StringInterner();
String canonical = interner.intern(name); // равные строки делят один экземплярРегистронезависимый поиск с учётом Unicode:
Pattern pattern = CaseInsensitivePattern.compile("Процедура");
boolean matches = pattern.matcher("процедура").matches(); // trueСкачивание BSL Language Server:
var client = new GitHubReleaseClient(githubToken); // токен может быть null
var downloader = new BslLanguageServerDownloader(installDir, client, HttpClient.newHttpClient());
Path binary = downloader.downloadIfNeeded(BslLanguageServerReleaseChannel.STABLE);Используйте wrapper Gradle:
./gradlew build # сборка, проверки и тесты
./gradlew check # то, что гоняет CI (test + jacoco + javadoc + проверка лицензий)Заголовки лицензии проверяются плагином license; при необходимости их можно проставить командой ./gradlew licenseFormat.
GNU LGPL 3.0 или новее (SPDX-License-Identifier: LGPL-3.0-or-later).
| Back | FazBrowse Home | New Git URL |