Библиотека для удобной работы с рефлектором и интерфейсами

Enchanted Reflector & Interfaces для OScript

Stars Release Открытый чат проекта https://gitter.im//oscript-reflector/Lobby

Build Status Coverage Status

Короткое название библиотеки 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.6.0
Изменен: 02.01.2019 19:48:29
0.5.1
Изменен: 02.01.2019 19:48:29
0.5.0
Изменен: 02.01.2019 19:48:29
0.4.0
Изменен: 02.01.2019 19:48:29
0.3.1
Изменен: 02.01.2019 19:48:29
0.3.0
Изменен: 02.01.2019 19:48:29
В разработке

Репозиторий

https://github.com/oscript-library/reflector

Актуальная версия

reflector-0.6.0