Mercurial > hg > isophonics-drupal-site
diff core/lib/Drupal/Core/Extension/InfoParserDynamic.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 129ea1e6d783 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/lib/Drupal/Core/Extension/InfoParserDynamic.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,48 @@ +<?php + +namespace Drupal\Core\Extension; + +use Drupal\Component\Serialization\Exception\InvalidDataTypeException; +use Drupal\Core\Serialization\Yaml; + +/** + * Parses dynamic .info.yml files that might change during the page request. + */ +class InfoParserDynamic implements InfoParserInterface { + + /** + * {@inheritdoc} + */ + public function parse($filename) { + if (!file_exists($filename)) { + $parsed_info = []; + } + else { + try { + $parsed_info = Yaml::decode(file_get_contents($filename)); + } + catch (InvalidDataTypeException $e) { + throw new InfoParserException("Unable to parse $filename " . $e->getMessage()); + } + $missing_keys = array_diff($this->getRequiredKeys(), array_keys($parsed_info)); + if (!empty($missing_keys)) { + throw new InfoParserException('Missing required keys (' . implode(', ', $missing_keys) . ') in ' . $filename); + } + if (isset($parsed_info['version']) && $parsed_info['version'] === 'VERSION') { + $parsed_info['version'] = \Drupal::VERSION; + } + } + return $parsed_info; + } + + /** + * Returns an array of keys required to exist in .info.yml file. + * + * @return array + * An array of required keys. + */ + protected function getRequiredKeys() { + return ['type', 'core', 'name']; + } + +}