X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=vendor%2Fbehat%2Fgherkin%2Fsrc%2FBehat%2FGherkin%2FLoader%2FDirectoryLoader.php;fp=vendor%2Fbehat%2Fgherkin%2Fsrc%2FBehat%2FGherkin%2FLoader%2FDirectoryLoader.php;h=dcde0e6289354e06e60af5dc30dc17733c922930;hp=0000000000000000000000000000000000000000;hb=1270d9129ce8f27c9b28b10518e32132c58e0aca;hpb=c27c0f0cdaa3f354b1fe54a56ae7e854be6e3f68 diff --git a/vendor/behat/gherkin/src/Behat/Gherkin/Loader/DirectoryLoader.php b/vendor/behat/gherkin/src/Behat/Gherkin/Loader/DirectoryLoader.php new file mode 100644 index 000000000..dcde0e628 --- /dev/null +++ b/vendor/behat/gherkin/src/Behat/Gherkin/Loader/DirectoryLoader.php @@ -0,0 +1,80 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Behat\Gherkin\Loader; + +use Behat\Gherkin\Gherkin; +use Behat\Gherkin\Node\FeatureNode; +use RecursiveDirectoryIterator; +use RecursiveIteratorIterator; + +/** + * Directory contents loader. + * + * @author Konstantin Kudryashov + */ +class DirectoryLoader extends AbstractFileLoader +{ + protected $gherkin; + + /** + * Initializes loader. + * + * @param Gherkin $gherkin Gherkin manager + */ + public function __construct(Gherkin $gherkin) + { + $this->gherkin = $gherkin; + } + + /** + * Checks if current loader supports provided resource. + * + * @param mixed $path Resource to load + * + * @return Boolean + */ + public function supports($path) + { + return is_string($path) + && is_dir($this->findAbsolutePath($path)); + } + + /** + * Loads features from provided resource. + * + * @param string $path Resource to load + * + * @return FeatureNode[] + */ + public function load($path) + { + $path = $this->findAbsolutePath($path); + + $iterator = new RecursiveIteratorIterator( + new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::SKIP_DOTS) + ); + $paths = array_map('strval', iterator_to_array($iterator)); + uasort($paths, 'strnatcasecmp'); + + $features = array(); + + foreach ($paths as $path) { + $path = (string) $path; + $loader = $this->gherkin->resolveLoader($path); + + if (null !== $loader) { + $features = array_merge($features, $loader->load($path)); + } + } + + return $features; + } +}