View source
<?php
namespace Drupal\xautoload\Adapter;
use Drupal\xautoload\Util;
use Drupal\xautoload\DirectoryBehavior\DefaultDirectoryBehavior;
use Drupal\xautoload\Discovery\ComposerDir;
use Drupal\xautoload\Discovery\ComposerJson;
use Drupal\xautoload\ClassFinder\GenericPrefixMap;
use Drupal\xautoload\DirectoryBehavior\Psr0DirectoryBehavior;
use Drupal\xautoload\ClassFinder\ExtendedClassFinderInterface;
use Drupal\xautoload\Discovery\ClassMapGeneratorInterface;
class ClassFinderAdapter implements ClassFinderAdapterInterface {
protected $finder;
protected $prefixMap;
protected $namespaceMap;
protected $classMapGenerator;
function __construct($finder, $classmap_generator) {
$this->finder = $finder;
$this->prefixMap = $finder
->getPrefixMap();
$this->namespaceMap = $finder
->getNamespaceMap();
$this->defaultBehavior = new DefaultDirectoryBehavior();
$this->psr0Behavior = new Psr0DirectoryBehavior();
$this->classMapGenerator = $classmap_generator;
}
function getNamespaceMap() {
return $this->namespaceMap;
}
function getPrefixMap() {
return $this->prefixMap;
}
function getClassmapGenerator() {
return $this->classMapGenerator;
}
function getFinder() {
return $this->finder;
}
function addClassmapSources($paths) {
$map = $this->classMapGenerator
->wildcardPathsToClassmap($paths);
$this
->addClassMap($map);
}
function composerJson($file) {
$json = ComposerJson::createFromFile($file);
$json
->writeToAdapter($this);
}
function composerDir($dir) {
$dir = ComposerDir::create($dir);
$dir
->writeToAdapter($this);
}
function addMultiplePsr0(array $prefixes) {
$namespace_map = array();
$prefix_map = array();
foreach ($prefixes as $prefix => $paths) {
if (FALSE === strpos($prefix, '\\')) {
$logical_base_path = Util::prefixLogicalPath($prefix);
foreach ((array) $paths as $root_path) {
$deep_path = strlen($root_path) ? rtrim($root_path, '/') . '/' . $logical_base_path : $logical_base_path;
$prefix_map[$logical_base_path][$deep_path] = $this->defaultBehavior;
}
}
$logical_base_path = Util::namespaceLogicalPath($prefix);
foreach ((array) $paths as $root_path) {
$deep_path = strlen($root_path) ? rtrim($root_path, '/') . '/' . $logical_base_path : $logical_base_path;
$namespace_map[$logical_base_path][$deep_path] = $this->psr0Behavior;
}
}
if (!empty($prefix_map)) {
$this->prefixMap
->registerDeepPaths($prefix_map);
}
$this->namespaceMap
->registerDeepPaths($namespace_map);
}
function addMultiplePsr4(array $map) {
$namespace_map = array();
foreach ($map as $namespace => $paths) {
$logical_base_path = Util::namespaceLogicalPath($namespace);
foreach ($paths as $root_path) {
$deep_path = strlen($root_path) ? rtrim($root_path, '/') . '/' : '';
$namespace_map[$logical_base_path][$deep_path] = $this->defaultBehavior;
}
}
$this->namespaceMap
->registerDeepPaths($namespace_map);
}
function addClassMap(array $classMap) {
$this->finder
->registerClasses($classMap);
}
function add($prefix, $paths) {
if (FALSE === strpos($prefix, '\\')) {
$logical_base_path = Util::prefixLogicalPath($prefix);
foreach ((array) $paths as $root_path) {
$deep_path = strlen($root_path) ? rtrim($root_path, '/') . '/' . $logical_base_path : $logical_base_path;
$this->prefixMap
->registerDeepPath($logical_base_path, $deep_path, $this->defaultBehavior);
}
}
$logical_base_path = Util::namespaceLogicalPath($prefix);
foreach ((array) $paths as $root_path) {
$deep_path = strlen($root_path) ? rtrim($root_path, '/') . '/' . $logical_base_path : $logical_base_path;
$this->namespaceMap
->registerDeepPath($logical_base_path, $deep_path, $this->psr0Behavior);
}
}
function addPsr0($prefix, $paths) {
$this
->add($prefix, $paths);
}
function addPsr4($prefix, $paths) {
$logical_base_path = Util::namespaceLogicalPath($prefix);
foreach ((array) $paths as $deep_path) {
$deep_path = strlen($deep_path) ? rtrim($deep_path, '/') . '/' : '';
$this->namespaceMap
->registerDeepPath($logical_base_path, $deep_path, $this->defaultBehavior);
}
}
function addNamespacePsr0($prefix, $paths) {
$logical_base_path = Util::namespaceLogicalPath($prefix);
foreach ((array) $paths as $root_path) {
$deep_path = strlen($root_path) ? rtrim($root_path, '/') . '/' . $logical_base_path : $logical_base_path;
$this->namespaceMap
->registerDeepPath($logical_base_path, $deep_path, $this->psr0Behavior);
}
}
function addPear($prefix, $paths) {
$logical_base_path = Util::prefixLogicalPath($prefix);
foreach ((array) $paths as $root_path) {
$deep_path = strlen($root_path) ? rtrim($root_path, '/') . '/' . $logical_base_path : $logical_base_path;
$this->prefixMap
->registerDeepPath($logical_base_path, $deep_path, $this->defaultBehavior);
}
}
}