Функции времени компиляции slurp
/ gorge
/ staticRead
/ staticExec
, похоже, используют каталог исходного файла в качестве рабочего каталога.В большинстве случаев это желаемое поведение, потому что связь исходного кода и ресурсов времени компиляции является фиксированной.Но как я могу использовать эти функции в библиотеке, чтобы они ссылались на ресурсы, предоставленные пользователями?
Пример структуры:
.
├── client
│ ├── client.nim
│ └── resource.data
└── library
└── library.nim
Я хочу предоставить функцию bundle
в библиотеке, что позволяет клиенту вызывать что-то вроде bundle("resource.data")
.Внутренне библиотека может использовать, например, slurp(givenResourcePath)
.Однако это не удастся, потому что slurp смотрит вверх resource.data
относительно library.nim
.Есть ли способ использовать эти функции и обращаться к файлам, относящимся к месту вызова?
Примечание. Я попытался сгенерировать AST, выполняя slurp с помощью шаблона / макроса, но даже если поиск относится к library.nim
.