public function HelpTopicTwigLoader::getSourceContext in Drupal 8
Same name and namespace in other branches
- 9 core/modules/help_topics/src/HelpTopicTwigLoader.php \Drupal\help_topics\HelpTopicTwigLoader::getSourceContext()
File
- core/
modules/ help_topics/ src/ HelpTopicTwigLoader.php, line 70
Class
- HelpTopicTwigLoader
- Loads help topic Twig files from the filesystem.
Namespace
Drupal\help_topicsCode
public function getSourceContext($name) {
$path = $this
->findTemplate($name);
$contents = file_get_contents($path);
try {
// Note: always use \Drupal\Core\Serialization\Yaml here instead of the
// "serializer.yaml" service. This allows the core serializer to utilize
// core related functionality which isn't available as the standalone
// component based serializer.
$front_matter = FrontMatter::load($contents, Yaml::class);
// Reconstruct the content if there is front matter data detected. Prepend
// the source with {% line \d+ %} to inform Twig that the source code
// actually starts on a different line past the front matter data. This is
// particularly useful when used in error reporting.
if ($front_matter
->getData() && ($line = $front_matter
->getLine())) {
$contents = "{% line {$line} %}" . $front_matter
->getCode();
}
} catch (InvalidDataTypeException $e) {
throw new LoaderError(sprintf('Malformed YAML in help topic "%s": %s.', $path, $e
->getMessage()));
}
return new Source($contents, $name, $path);
}