reflector

12 апреля 2018 16:30

Скрипты OneScript


Данная библиотека для языка OScript, упрощает работу с встроенным объектом `Рефлектор` и добавляет функциональность работы с интерфейсами

Enchanted Reflector & Interfaces для OScript

Короткое название библиотеки reflector

Данная библиотека для языка OScript, упрощает работу с встроенным объектом Рефлектор и добавляет функциональность работы с интерфейсами

Документация и описание публичного API

Быстрый старт

Библиотека реализовывает 2 новых класса:

  • РефлекторОбъекта - класс отвечает за обработку проверки наличия методов у объектов и кеширования результатов
  • ИнтерфейсОбъекта - клаcс реализовывает виртуальные интерфейсы для объектов и проводит их сравнение с картами объектов (метод ПолучитьТаблицуМетодов объекта Рефлектор)

Установка

Для установки необходимо:

  • Скачать файл reflector*.ospx из раздела releases
  • Воспользоваться командой:
$ opm install -f <ПутьКФайлу>

Пример простой проверки на метод/свойство объекта

  • Проверка на функцию объекта
    РасширенныйРефлектор = Новый РефлекторОбъекта(Новый ТестовыйКласс);

    ЕстьФункция = РасширенныйРефлектор.ЕстьФункция("ПроверочнаяФункция", 5);

  • Проверка на процедуру объекта
    РасширенныйРефлектор = Новый РефлекторОбъекта(Новый ТестовыйКласс);

    ЕстьПроцедура = РасширенныйРефлектор.ЕстьПроцедура("ПроверочнаяПроцедура", 1);

  • Проверка на свойство объекта
    РасширенныйРефлектор = Новый РефлекторОбъекта(Новый ТестовыйКласс);

    ЕстьСвойство = РасширенныйРефлектор.ЕстьСвойство("Свойство1");

  • Проверка объекта на реализацию интерфейса
    Интерфейс = Новый ИнтерфейсОбъекта;
    Интерфейс.Ф("Функция1")
             .П("Процедура1");

    РасширенныйРефлектор = Новый РефлекторОбъекта(ЭтотОбъект);

    РеализуетИнтерфейс = РасширенныйРефлектор.РеализуетИнтерфейс(Интерфейс);

    Утверждения.ПроверитьИстину(РеализуетИнтерфейс, "Интерфейс реализуется объектом");

  • Получение структуры реализованных методов объекта по интерфейсу

    Интерфейс = Новый ИнтерфейсОбъекта;
    Интерфейс.Ф("Функция1")
             .П("Процедура1")
             .Ф("ЛиповаяФункция", 2)
             .П("ЛиповаяПроцедура", 3);

    РасширенныйРефлектор = Новый РефлекторОбъекта(Новый ТестовыйКласс);

    РеализованныеМетодыИнтерфейса = РасширенныйРефлектор.РеализованныеМетодыИнтерфейса(Интерфейс);

Доработка

Доработка проводится по git-flow. Жду ваших PR.

Лицензия

Смотри файл LICENSE.

0

Автоматическая установка с TurboConf

1. Откройте маркетплейс из главного меню TurboConf или из меню в панели уведомлений.

Откройте маркетплейс

2. Найдите нужную разработку.

Найдите нужную разработку

3. Нажмите кнопку Установить.

Нажмите кнопку Установить

TurboConf все установит автоматически!

Модератору