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')); }
/** * 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>'; }