Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Структура библиотеки

Имя библиотеки и пакеты Libretto

Все пакеты исходных текстов на языке Libretto библиотеки должны быть прямыми пакетами или подпакетами корневого пакета библиотеки. Например, если библиотека называется com/teacode/pdf, то внутри возможны только пакеты com/teacode/pdf или подпакеты этого пакета. Это условие проверятся при подключении библиотек в Libretto-систему.

Но при распространении библиотек использование символа / затруднено из-за файловых систем или URL. Поэтому имя каталога или zip-архива, хранящего Libretto-библиотеку, составляется как имя корневого пакета, в котором символы / заменены на точки .. Например, библиотека с корневым пакетом com/teacode/pdf хранится либо в каталоге com.teacode.pdf, либо в архиве com.teacode.pdf.zip

Каталоги библиотеки

Каталоги (верхнего уровня) библиотеки:

  • libretto - исходные тексты Libretto
  • public - публичные файлы
  • jvm - данные для JVM

Исходные тексты Libretto

Исходные тексты лежат в каталоге libretto корня библиотеки. Внутренняя структура подкаталогов и файлов ограничивается только возможностями файловой структуры, но все исходные тексты программы на Libretto должны иметь расширение .ltt. Имена каталогов и файлов могут быть никак не связаны с именами пакетов, которые используются.

Публичные файлы (для веб-приложения и publicText)

Файлы, которые будут публичными и доступными статически через веб-приложение должны располагаться в каталоге public корня библиотеки. Внутренняя структура подкаталогов и файлов ограничивается только возможностями файловой структуры.

Доступ к публичным файлам библиотеки во время исполнения возможен двумя способами:

  1. Через URL веб-приложения, который формируется следующим образом: /public/корневой пакет библиотеки/путь до файла/файл Например, если в библиотеке с корневым пакетом com/teacode/abc в каталоге public есть каталог js, в котором лежит файл test.js, то при использовании этой библиотеки в веб-приложении этот файл будет доступен по адресу /public/com/teacode/abc/js/test.js

  2. Программным способом при помощи метода publicText библиотеки libretto/lib. Этот метод принимает два строковых литерала, первых из которых указывает имя библиотеки (корневой пакет библиотеки), второй - имя файла относительно public в этой библиотеке (используется / в качестве разделителя каталогов вне зависимости от ОС). Существование файла проверяется в момент компиляции. Метод возвращает текстовое представление файла в кодировке UTF-8. Например, если в библиотеке с корневым пакетом com/teacode/abc в каталоге public есть каталог js, в котором лежит файл test.js, то этот файл в текстовом виде доступен через вызов lib/publicText("com/teacode/abc", "js/test.js")

В любом случае для использования публичных файлов соответствующая библиотека должна быть подключена при помощи use в любом месте программы или веб-приложения.

jar-файлы (для JVM)

Возможно подключение jar-файлов, которые будут использоваться при запуске через JVM. jar-файлы складываются к подкаталог jar подкаталога jvm корневого каталога библиотеки (т. е. в подкаталог jvm/jar).

Имя jar-файла значения не имеет. При использовании библиотеки в приложении автоматически подключаются все jar-файлы из указанного каталога.

Libretto не делает никаких попыток разрешить конфликты jar, не занимается их версионностью. Все jar-файлы всех используемых Libretto-библиотек подключаются одновременно. Если будут дубли или разные версии, то поведение не определено (зависит от используемого JRE).

Поскольку jar-файлы берутся скопом из всех библиотек, то возможны их дубли. Поэтому желательны внутренние правила использования jar-файлов. Какие-то специфичные или обособленные Libretto-библиотеки могут сами по себе содержать jar-файлы. Соответственно, если есть желание использовать jar-файлы в своей библиотеке, то лучше подключить уже существующие, где уже есть необходимые jar-файлы. Но если jar-файлы достаточно универсальные, то лучше сделать отдельные Libretto-библиотеки, которые будут содержать только jar-файлы (и заглушку на Libretto). Тогда библиотеки смогут подключать их для использования.