ManualSectionNode.cpp 752 B

1234567891011121314151617181920212223242526
  1. #include "ManualSectionNode.h"
  2. #include "ManualPageNode.h"
  3. #include <AK/String.h>
  4. #include <LibCore/CDirIterator.h>
  5. String ManualSectionNode::path() const
  6. {
  7. return String::format("/usr/share/man/man%s", m_section.characters());
  8. }
  9. void ManualSectionNode::reify_if_needed() const
  10. {
  11. if (m_reified)
  12. return;
  13. m_reified = true;
  14. CDirIterator dir_iter { path(), CDirIterator::Flags::SkipDots };
  15. while (dir_iter.has_next()) {
  16. String file_name = dir_iter.next_path();
  17. ASSERT(file_name.ends_with(".md"));
  18. String page_name = file_name.substring(0, file_name.length() - 3);
  19. NonnullOwnPtr<ManualNode> child = make<ManualPageNode>(*this, move(page_name));
  20. m_children.append(move(child));
  21. }
  22. }