public function load($file, $section = NULL)
{
if (!is_file($file) || !is_readable($file)) {
throw new Nette\FileNotFoundException("File '{$file}' is missing or is not readable.");
}
$this->dependencies[] = $file;
$data = $this->getAdapter($file)->load($file);
if ($section) {
if (isset($data[self::INCLUDES_KEY])) {
throw new Nette\InvalidStateException("Section 'includes' must be placed under some top section in file '{$file}'.");
}
$data = $this->getSection($data, $section, $file);
}
// include child files
$merged = [];
if (isset($data[self::INCLUDES_KEY])) {
Validators::assert($data[self::INCLUDES_KEY], 'list', "section 'includes' in file '{$file}'");
foreach ($data[self::INCLUDES_KEY] as $include) {
$merged = Helpers::merge($this->load(dirname($file) . '/' . $include), $merged);
}
}
unset($data[self::INCLUDES_KEY]);
return Helpers::merge($data, $merged);
}