ManualSectionNode.cpp 782 B

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