$f = $this->fireLogEvent; $f($val); } private $fireLogEvent; public function __construct(callable $fireLogEvent) { $this->fireLogEvent = $fireLogEvent; } } \Closure::bind(static function () { static::$fileClasses = (new \Yasca\Core\FunctionPipe())->wrap(__FILE__ . '.FileClasses.json')->pipe('\\file_get_contents')->pipe([JSON::_class, 'decode'], true)->unwrap(); static::$installedPlugins = (new \Yasca\Core\IteratorBuilder())->from(\get_declared_classes())->concat((new \Yasca\Core\IteratorBuilder())->from(new \RecursiveDirectoryIterator(__DIR__ . '/Plugins', \FilesystemIterator::KEY_AS_PATHNAME | \FilesystemIterator::CURRENT_AS_SELF | \FilesystemIterator::UNIX_PATHS))->select(static function ($rdi) { return $rdi->getSubPathname(); })->whereRegex('`(?<!base)\\.php$`ui')->select(static function ($relativePath) { return __NAMESPACE__ . '\\Plugins\\' . (new \Yasca\Core\FunctionPipe())->wrap($relativePath)->pipe('\\substr', 0, -\strlen('.php'))->pipeLast('\\str_replace', '/', '\\')->unwrap(); }))->where(static function ($current) { $c = new \ReflectionClass($current); if ($c->isAbstract() !== true && $c->isSubclassOf(__NAMESPACE__ . '\\Plugin') === true) { return true; } return false; })->selectKeys(static function ($plugin) { return [$plugin, (new \Yasca\Core\FunctionPipe())->wrap($plugin)->pipe([Iterators::_class, 'traitsOf'])->toIteratorBuilder()->where(static function ($trait) { return $trait === __NAMESPACE__ . '\\AggregateFileContentsPlugin' || $trait === __NAMESPACE__ . '\\MulticastPlugin' || $trait === __NAMESPACE__ . '\\SingleFileContentsPlugin' || $trait === __NAMESPACE__ . '\\SingleFilePathPlugin'; })->firstOrNull()]; })->where(static function ($plugin, $trait) { return $trait !== null; })->groupBy(static function ($plugin, $trait) { return $trait; })->select(Operators::paramLimit([Iterators::_class, 'toFixedArray'], 1))->toArray(true); }, null, __NAMESPACE__ . '\\' . \basename(__FILE__, '.php'))->__invoke();
return $trait === __NAMESPACE__ . '\AggregateFileContentsPlugin' || $trait === __NAMESPACE__ . '\MulticastPlugin' || $trait === __NAMESPACE__ . '\SingleFileContentsPlugin' || $trait === __NAMESPACE__ . '\SingleFilePathPlugin'; }) ->firstOrNull() ]; }) ->where( static function ($plugin, $trait) { return $trait !== null; }) ->groupBy( static function ($plugin, $trait) { return $trait; }) ->select( Operators::paramLimit( [ Iterators::_class, 'toFixedArray' ], 1)) ->toArray(true); }, null, __NAMESPACE__ . '\\' . \basename(__FILE__, '.php'))->__invoke();