Java
Java-пакет читает тот же .tdc-конфиг и при одном и том же сиде выдаёт тот же
результат, что и реализации на TypeScript, Python, C# и Rust — та же межъязыковая
гарантия.
Где взять
Одна зависимость с Maven Central:
<dependency>
<groupId>io.github.nickliapin</groupId>
<artifactId>tdcv2</artifactId>
<version>0.1.7</version>
</dependency>
Gradle, в build.gradle.kts:
implementation("io.github.nickliapin:tdcv2:0.1.7")
Стартовые паки едут внутри jar, так что это работает без всякой доустановки.
Полная картина, включая отдельный jar с командной строкой, — на странице
Установка. У Maven нет аналога npm-овского
bin, поэтому командная строка поставляется своим самодостаточным артефактом.
Как пользоваться
var data = new TDC("users.tdc");
System.out.println(data.toString());
for (var row : data.iterate()) {
System.out.println(row.get("Gender"));
}
Имена методов повторяют TypeScript API.
Одно значение без конфига
Quick вытягивает одно значение из тех же пакетов данных, которые читает конфиг: ни
файла, ни <env>, один вызов.
import io.github.nickliapin.tdc.quick.Quick;
Quick tdc = Quick.tdc();
tdc.get("person.lastName"); // Jones
tdc.get("usa.docs.ssn"); // 699209702, с настоящими контрольными цифрами
tdc.many("person.lastName", 5); // сразу пять
Quick.seeded("demo").locale("ru").get("person.lastName"); // закреплено и по-русски
Адрес здесь строка, тогда как TypeScript, Python и C# идут по нему через члены объекта.
Запись через члены требует по одному сгенерированному методу на адрес, а сгенерированная
поверхность покрыла бы только пакеты внутри jar — при том что большинство пакетов
приходит во время работы, а get("ru.person.lastName") заработает сразу после загрузки.
Вся поверхность — на странице По одному значению.