public function test_stack_docs_title_from_filename()
 {
     $this->assertEquals('About', stack_docs_title_from_filename('About'));
     $this->assertEquals('Some folder', stack_docs_title_from_filename('Some_folder'));
     $this->assertEquals('Documentation', stack_docs_title_from_filename('Documentation.md'));
     $this->assertEquals('Future plans', stack_docs_title_from_filename('Future_plans.md'));
 }
Example #2
0
/**
 * Display the STACK documentation index for a particular path.
 * @param string $dir directory.
 * @param string $relpath relative path to that directory.
 */
function stack_docs_index($dir, $relpath = '')
{
    // Write a list describing the directory structure, recursive, discriminates for .md files.
    $exclude = array('index.md', 'Site_map.md');
    if (!is_dir($dir)) {
        return '';
    }
    $items = array();
    foreach (glob($dir . '/*') as $filepath) {
        $filename = basename($filepath);
        if (substr($filename, 0, 1) === '.' || in_array($filename, $exclude)) {
            continue;
        }
        $title = stack_docs_title_from_filename($filename);
        if (is_dir($filepath)) {
            $items[$title] = "<li><a href=\"{$relpath}/{$filename}/\">" . $title . "</a>" . stack_docs_index($filepath, "{$relpath}/{$filename}") . '</li>';
        } else {
            if (substr($filename, -2) === 'md') {
                $items[$title] = "<li><a href=\"{$relpath}/{$filename}\">" . $title . '</a></li>';
            }
        }
    }
    if (empty($items)) {
        return '';
    }
    stack_utils::sort_array_by_key($items);
    return '<ul class="dir">' . implode('', $items) . '</ul>';
}