hub.oscript.io
hub.oscript.io

reflectorпакет

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

автор: Khorev Alekseyскачиваний: 53932репозиторий: github.com/oscript-library/reflector

Пакет лежит в основном пуле хаба, а opm знает этот хаб по умолчанию: короткой формы достаточно.

opm install reflector

Скачанный файл ставится командой opm install -f <файл> — сеть для этого уже не нужна.

Описание

Enchanted Reflector & Interfaces для OScript

Stars Release [Открытый чат проекта https://gitter.im//oscript-reflector/Lobby](https://gitter.im/oscript-reflector/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

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.

В пакете README нет — показан README из репозитория, с тега 0.7.1.