Source for library:sourcelist

<?php namespace App\Library;
/**
 * Custom example transform.
 */
class Sourcelist
{
    /**
     * The url to the source blocks.
     */
    const URL_BASE = '/source/%s/%s';
    /**
     * Configuration array.
     *
     * @var array
     */
    private $_config;
    /**
     * Currently active url.
     *
     * @var array
     */
    private $_active;

    /**
     * Construct with configuration variable.
     *
     * @param array $config
     */
    public function __construct($config, $active)
    {
        $this->_config = $config;
        $this->_active = $active;
    }

    /**
     * Render to string.
     *
     * @return string
     */
    public function __toString()
    {
        $result = [];
        foreach ($this->_config as $name => $details) {
            $result[] = $this->_getRenderedGroup($name, $details['files']);
        }
        return implode(PHP_EOL, $result);
    }

    /**
     * Render group to string.
     *
     * @param string $name
     * @param array $files
     * @return string
     */
    private function _getRenderedGroup($name, $files)
    {
        $result = [
            '<div class="list-group">',
            '<div class="list-group-item disabled"><b>' . ucfirst($name) . '</b></div>',
        ];
        foreach ($files as $file) {
            $url = sprintf(self::URL_BASE, $name, $file);
            $active = ($url == $this->_active) ? ' active' : '';
            $result[] = "<a href=\"{$url}\" class=\"list-group-item{$active}\">{$file}</a>";
        }
        $result[] = '</div>';
        return implode(PHP_EOL, $result);
    }
}