Source of file YamlParser.php
Size: 2,200 Bytes - Last Modified: 2022-01-13T10:01:28+00:00
/var/www/docs.ssmods.com/process/src/code/parsers/YamlParser.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 | <?php namespace BenManu\StyleGuide; use SilverStripe\Core\Injector\Injector; use SilverStripe\Dev\YamlFixture; use SilverStripe\Control\Director; use Exception; use BenManu\StyleGuide\StyleGuideFixtureFactory; use BenManu\StyleGuide\StyleGuideBlueprint; use BenManu\StyleGuide\StyleGuide; /** * YamlParser * Turn a yaml file into an ArrayData and ArrayList, and some basic searching. */ class YamlParser { protected $path; protected $factory; public function __construct($path) { if(!$this->isYaml($path)) { throw new \Exception(sprintf( "You can only process .yml files. (Path: %s)", $path ), 1); } $this->path = $path; $this->setFactory(); } public function setFactory() { $factory = Injector::inst()->create(StyleGuideFixtureFactory::class); $blueprint = Injector::inst()->create(StyleGuideBlueprint::class, StyleGuide::class, StyleGuide::class); $factory->define(StyleGuide::class, $blueprint); $fixture = Injector::inst()->create(YamlFixture::class, $this->path); $fixture->writeInto($factory); $this->factory = $factory; } public function get($class) { if($obj = $this->factory->get($class)) { return $obj; } } public function isYaml($path) { $realFile = realpath(BASE_PATH.'/'.$path); $baseDir = realpath(Director::baseFolder()); if(!$realFile || !file_exists($realFile)) { return false; } else if(substr($realFile,0,strlen($baseDir)) != $baseDir) { return false; } else if(substr($realFile,-4) != '.yml') { return false; } return true; } public static function hasYaml($path) { $realFile = realpath(BASE_PATH.'/'.$path); $baseDir = realpath(Director::baseFolder()); if(!$realFile || !file_exists($realFile)) { return false; } else if(substr($realFile,0,strlen($baseDir)) != $baseDir) { return false; } else if(substr($realFile,-4) != '.yml') { return false; } return true; } } |