瀏覽代碼

LibManual: Allow overriding a Node's path calculation

This is necessary for subclassing SectionNode, but generally allows more
code to rely on path() virtual dispatch always finding the correct path
regardless of the static type.
kleines Filmröllchen 2 年之前
父節點
當前提交
44e4a38535

+ 1 - 0
Userland/Libraries/LibManual/Node.h

@@ -25,6 +25,7 @@ public:
     virtual ErrorOr<String> name() const = 0;
     virtual bool is_page() const { return false; }
     virtual bool is_open() const { return false; }
+    virtual ErrorOr<String> path() const = 0;
 
     // Backend for the command-line argument format that Help and man accept. Handles:
     // [/path/to/documentation.md] (no second argument)

+ 1 - 1
Userland/Libraries/LibManual/PageNode.h

@@ -28,7 +28,7 @@ public:
     virtual ErrorOr<String> name() const override { return m_page; };
     virtual bool is_page() const override { return true; }
 
-    ErrorOr<String> path() const;
+    virtual ErrorOr<String> path() const override;
 
     static ErrorOr<NonnullRefPtr<PageNode>> help_index_page();
 

+ 2 - 1
Userland/Libraries/LibManual/SectionNode.h

@@ -32,7 +32,7 @@ public:
     virtual Node const* parent() const override { return nullptr; }
     virtual ErrorOr<String> name() const override;
     String const& section_name() const { return m_section; }
-    ErrorOr<String> path() const;
+    virtual ErrorOr<String> path() const override;
 
     virtual bool is_open() const override { return m_open; }
     void set_open(bool open);
@@ -40,6 +40,7 @@ public:
     static ErrorOr<NonnullRefPtr<SectionNode>> try_create_from_number(StringView section_number);
 
 protected:
+    // In this class, the section is a number, but in lower sections it might be the same as the name.
     String m_section;
     String m_name;