Re: Распарсить typescript.ts и вывести
От: avovana Россия  
Дата: 20.11.21 19:49
Оценка:
Получается есть набор С++ классов под стать классам из *.ts файла.
На входе *.ts файл может менять. В нём могут быть данные классы в разной последовательности.
Суть программы — получая такой *.ts файл выводить такой же.
Сделать это через связывание уже готовых С++ классов.
struct MarketPolicy {};

struct LimitPolicy {
    double price;
    std::optional<double> stop;
};


Гарантируется что в *.ts файле могут быть только классы, которые уже подготовлены в С++ исполнение.

Алгоритм программы вкратце:
Комбинация ts классов -> выставление соответствия из уже готовых С++ файлов -> вывод.

В репе есть пример как это делать вручную.
А как автоматизировать?
Наверное:
1. Считать входной *.ts файл.
2. Выцепить названия классов
3. Поместить их в контейнер

4. Пройтись по контейнеру
5. получая очередное имя создавать биндинг, в котором еще в зависимости от имени проставляется тип:

Binder<MarketPolicy> binder("MarketPolicy");


Таким образом получим контейнер биндеров. Что с ними делать?

6. Поместить в некий ObjectRegistry
7. Вызвать метод render()

Не всё понятно. Не понятна наводка что за проставление свойств у такого биндинга, если вдруг у класса есть поля:
Binder<LimitPolicy> binder("LimitPolicy");
binder.set("price", &LimitPolicy::price);
binder.set("stop", &LimitPolicy::stop);



Смысл в том, что на входе(*.ts) мы получаем не объекты, а классы:
class MarketPolicy {
};

class LimitPolicy {
    price: number;
    stop?: number;
};

class Order {
    symbol: string;
    quantity: number;
    isBuy: boolean;
    policy: MarketPolicy | LimitPolicy;
};

class Balance {
    free: number;
    locked: number;
};
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.