/* * Copyright (c) 2019-2020, Sergey Bugaev * Copyright (c) 2022, the SerenityOS developers. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Manual { class PageNode; class Node : public RefCounted { public: virtual ~Node() = default; virtual ErrorOr>> children() const = 0; virtual Node const* parent() const = 0; virtual ErrorOr name() const = 0; virtual bool is_page() const { return false; } virtual bool is_open() const { return false; } virtual ErrorOr path() const = 0; virtual PageNode const* document() const = 0; // Backend for the command-line argument format that Help and man accept. Handles: // [/path/to/documentation.md] (no second argument) // [page] (no second argument) - will find first section with that page // [section] [page] // Help can also (externally) handle search queries, which is not possible (yet) in man. static ErrorOr> try_create_from_query(Vector const& query_parameters); // Finds a page via the help://man///page URLs. // This will automatically start discovering pages by inspecting the filesystem. static ErrorOr> try_find_from_help_url(URL const&); }; }