#ifndef ENCYCLOPEDIA_CATEGORY_HPP_
#define ENCYCLOPEDIA_CATEGORY_HPP_

#include <ostream>
#include <string>

/**
 * @brief Describes how to generate pages in an encyclopedia category.
 */
class EncyclopediaCategory
{
public:
    virtual ~EncyclopediaCategory() = default;

    /**
     * @brief Attempt to load a page in this category.
     * 
     * @param pageName The name of the page, within this category.
     * @param os Output the page markup to this stream.
     * @return `true` if successful; `false` if the page does not exist.
     */
    virtual bool tryLoadPage(const std::string &pageName, std::ostream &os) = 0;
};

#endif