Объекты представляют собой экземпляры с++ классов "проброшенные" в яваскрипт посредством QJSEngine. Для пользователя они представлены графически в виде квадратиков, которые можно выделять и просматривать их свойства в отдельной форме. В этой же форме можно задавать формулы для свойств, добавлять и удалять свойства. Например, юзер вводит в поле свойства с именем "pr" для объекта "Obj1" формулу "2+2", и программа (через eval("Object.defineProperty(...") обновляет в контексте яваскрипта свойство для этого объекта, далее вызывается пересчет свойств значений у других объектов которые возможно ссылаются на измененное свойство. Вся эта созданная юзером система сохраняется в JSON в файлик, для последующей загрузки. Как раз для сохранения я предполагал прямо в яваскрипте пробежаться во всем объектам и их свойствам, заполняя JSON строку.
для быстрых тестов использую TypeScript в Visual Studio Code с включенным флагом allowJs, но по факту это будет плагин на Qt с поддержкой пользовательских скриптов к стороннему приложению , так что все не просто, и твой ответ наводит на мысль что все это стоит еще хорошенько протестировать. )
Т.к. внутренние тексты свойств-функций будут писать пользователи на этапе выполнения программы, то желательно максимально упростить синтаксис, потому остановился на свойствах, к которым можно обращаться без скобок. Свойства добавляются/удаляются пользователем, ссылаются друг на друга в своем коде, потому нужна динамика, ну и сохранение(восстановление) в файл.
Спасибо! Очень выручили.
Необходимо сохранять в файл(и восстанавливать) введенные пользователями выражения(свойства объектов), которые могут ссылаться свойства других объектов(и т.п.). Можно конечно все реализовать через с++, но хочется рассмотреть разные варианты и выбрать оптимальный. Наткнулся на яваскриптовый из коробки JSON.stringify, даже нашел в инете вариант сохраняющий функции, но вот с "вычисляемыми" свойствами возникла проблемка.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.