comparison 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
comparison
equal deleted inserted replaced
-1:000000000000 0:4c8ae668cc8c
1 <?php
2
3 namespace Drupal\Core\Extension;
4
5 use Drupal\Component\Serialization\Exception\InvalidDataTypeException;
6 use Drupal\Core\Serialization\Yaml;
7
8 /**
9 * Parses dynamic .info.yml files that might change during the page request.
10 */
11 class InfoParserDynamic implements InfoParserInterface {
12
13 /**
14 * {@inheritdoc}
15 */
16 public function parse($filename) {
17 if (!file_exists($filename)) {
18 $parsed_info = [];
19 }
20 else {
21 try {
22 $parsed_info = Yaml::decode(file_get_contents($filename));
23 }
24 catch (InvalidDataTypeException $e) {
25 throw new InfoParserException("Unable to parse $filename " . $e->getMessage());
26 }
27 $missing_keys = array_diff($this->getRequiredKeys(), array_keys($parsed_info));
28 if (!empty($missing_keys)) {
29 throw new InfoParserException('Missing required keys (' . implode(', ', $missing_keys) . ') in ' . $filename);
30 }
31 if (isset($parsed_info['version']) && $parsed_info['version'] === 'VERSION') {
32 $parsed_info['version'] = \Drupal::VERSION;
33 }
34 }
35 return $parsed_info;
36 }
37
38 /**
39 * Returns an array of keys required to exist in .info.yml file.
40 *
41 * @return array
42 * An array of required keys.
43 */
44 protected function getRequiredKeys() {
45 return ['type', 'core', 'name'];
46 }
47
48 }