コード例 #1
0
ファイル: Plugin.php プロジェクト: pombredanne/yasca
        $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();
コード例 #2
0
ファイル: plugin.php プロジェクト: gpanda/security-scan-tool
                                            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();