gretmn102 / Qsp.FSharp

QSP ecosystem written in F# environment. Contains: language core (AST, parser, printer), language server (LSP) and CLI utility for manipulating language sources.
2 stars 1 forks source link

Структура QSP проекта #1

Open gretmn102 opened 3 years ago

gretmn102 commented 3 years ago

Собственно, ребята, структуру проекта я вижу такой:

root
├─resources
│ └─Картиночке.jpeg
├─src
│ ├─ПапкаСЛокациями1
│ │ ├─СборникЛокаций1.qsps
│ │ ├─СборникЛокаций2.qsps
│ │ └─СборникЛокаций3.qsps
│ ├─Папка2
│ │ └─СборникЛокаций1.qsps
│ ├─Папка3
│ │ ├─ОчереднойСборникЛокаций.qsps
│ │ ├─Подпапка
│ │ │ └─ИЕщеОдинСборникЛокаций.qsps
│ │ ├─СлишкоМалоЛокаций.qsps
│ │ └─ЭтомуМируНужноБольшеРазныхЛокаций.qsps
│ └─НазваниеИгры.qproj
└─НазваниеИгры.qsp

В .qproj нужно только указать версию QSP (Quest Navigator, Aero, txt2web и т.п.). Там, где находится этот файл, LSP подбирает рекурсивно все .qsps файлы и работает с ними, чтобы найти такую-то локацию или найти такие-то переменные, ну вы понимаете. Единственное, что меня смущает, — местонахождение "resources", ведь в исходниках вполне можно распознать строки, которые обращаются к этим ресурсам. Например, тот же

Впрочем, можно загнать ее в .qproj, и она примет такой вид (пускай JSON, ведь он всем понятен):

{
    "TargetFramework":"qsp 5.7.0",
    "Output":"../НазваниеИгры.qsp",
    "FirstLocation":"Begin"
}

По полю "Output" уже и будем обращаться к ресурсам, фух. Почему не прямо:

root
├─resources
│ └─Картиночке.jpeg
├─ПапкаСЛокациями1
│ ├─СборникЛокаций1.qsps
│ ├─СборникЛокаций2.qsps
│ └─СборникЛокаций3.qsps
├─Папка2
│ └─СборникЛокаций1.qsps
├─Папка3
│ ├─ОчереднойСборникЛокаций.qsps
│ ├─Подпапка
│ │ └─ИЕщеОдинСборникЛокаций.qsps
│ ├─СлишкоМалоЛокаций.qsps
│ └─ЭтомуМируНужноБольшеРазныхЛокаций.qsps
├─НазваниеИгры.qproj
└─НазваниеИгры.qsp

Чтобы не перебирать папки с ресурсами лишний раз, мало ли, вдруг их много. Что скажете?