<?php

declare(strict_types=1);

namespace Doctrine\RST\Nodes;

use Doctrine\RST\Environment;

class TocNode extends Node
{
    private const DEFAULT_DEPTH = 2;

    /** @var Environment */
    protected $environment;

    /** @var string[] */
    private $files;

    /** @var string[] */
    private $options;

    /**
     * @param string[] $files
     * @param string[] $options
     */
    public function __construct(Environment $environment, array $files, array $options)
    {
        parent::__construct();

        $this->files       = $files;
        $this->environment = $environment;
        $this->options     = $options;
    }

    public function getEnvironment(): Environment
    {
        return $this->environment;
    }

    /** @return string[] */
    public function getFiles(): array
    {
        return $this->files;
    }

    /** @return string[] */
    public function getOptions(): array
    {
        return $this->options;
    }

    public function getDepth(): int
    {
        if (isset($this->options['depth'])) {
            return (int) $this->options['depth'];
        }

        if (isset($this->options['maxdepth'])) {
            return (int) $this->options['maxdepth'];
        }

        return self::DEFAULT_DEPTH;
    }

    public function isTitlesOnly(): bool
    {
        return isset($this->options['titlesonly']);
    }
}