Craft Language Parser
The parser subsystem converts Craft Language XML sources into the Docraft
model tree. A registry of IDocraftParser implementations handles each
element tag.
DocraftCraftLanguageParser
Main parser that loads XML, registers tag-specific parsers, and builds the
DocraftDocument.
-
class DocraftCraftLanguageParser
Parses the Docraft Craft Language into a DocraftDocument.
Uses an XML parser (pugixml) and a registry of node parsers to build the document tree.
Public Functions
-
DocraftCraftLanguageParser()
Constructs a parser and registers default node parsers.
-
~DocraftCraftLanguageParser() = default
-
void parse(const std::string &craft_language_source)
Parses craft language source as a string.
- Parameters:
craft_language_source – XML source as string.
-
void load_from_file(const std::string &file_path)
Loads and parses craft language source from file.
- Parameters:
file_path – Path to XML file.
-
std::shared_ptr<DocraftDocument> get_document() const
Returns the parsed document.
- Returns:
Parsed document or nullptr if not parsed.
-
std::shared_ptr<model::DocraftNode> parse_node(const pugi::xml_node &xml_node)
Parses a single XML node into a Docraft node.
- Parameters:
xml_node – XML node.
- Returns:
Parsed Docraft node.
-
DocraftCraftLanguageParser()
IDocraftParser
Interface for single-tag parsers.
-
class IDocraftParser
Interface for Craft language node parsers.
Implementations translate a single XML node into a Docraft model node.
Subclassed by docraft::craft::parser::DocraftBlackLineParser, docraft::craft::parser::DocraftCircleParser, docraft::craft::parser::DocraftForeachParser, docraft::craft::parser::DocraftImageParser, docraft::craft::parser::DocraftLayoutParser, docraft::craft::parser::DocraftLineParser, docraft::craft::parser::DocraftListParser, docraft::craft::parser::DocraftNewPageParser, docraft::craft::parser::DocraftPageNumberParser, docraft::craft::parser::DocraftPolygonParser, docraft::craft::parser::DocraftRectangleParser, docraft::craft::parser::DocraftSettingsParser, docraft::craft::parser::DocraftTableParser, docraft::craft::parser::DocraftTextParser, docraft::craft::parser::DocraftTriangleParser, docraft::craft::parser::DocraftUListParser
Public Functions
-
virtual ~IDocraftParser() = default
Virtual destructor.
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) = 0
Parses an XML node into a Docraft node.
- Parameters:
craft_language_source – XML node to parse.
- Returns:
Parsed Docraft node.
-
virtual ~IDocraftParser() = default
Element Parsers
Each parser translates one XML tag into the corresponding model node.
-
class DocraftTextParser : public docraft::craft::IDocraftParser
Parser for text nodes.
Public Functions
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
Parses a text XML node.
- Parameters:
craft_language_source – XML node.
- Returns:
Parsed text node.
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
-
class DocraftImageParser : public docraft::craft::IDocraftParser
Parser for image nodes.
Public Functions
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
Parses an image XML node.
- Parameters:
craft_language_source – XML node.
- Returns:
Parsed image node.
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
-
class DocraftRectangleParser : public docraft::craft::IDocraftParser
Base parser for rectangle-like nodes.
Subclassed by docraft::craft::parser::DocraftBodyParser, docraft::craft::parser::DocraftFooterParser, docraft::craft::parser::DocraftHeaderParser
Public Functions
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
Parses a rectangle XML node into a DocraftRectangle.
- Parameters:
craft_language_source – XML node.
- Returns:
Parsed rectangle node.
Public Static Functions
Copies rectangle attributes from one node to another.
- Parameters:
from – Source rectangle.
to – Destination rectangle.
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
-
class DocraftCircleParser : public docraft::craft::IDocraftParser
Parser for circle nodes.
Public Functions
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
Parses a circle XML node.
- Parameters:
craft_language_source – XML node.
- Returns:
Parsed circle node.
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
-
class DocraftTriangleParser : public docraft::craft::IDocraftParser
Parser for triangle nodes.
Public Functions
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
Parses a triangle XML node.
- Parameters:
craft_language_source – XML node.
- Returns:
Parsed triangle node.
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
-
class DocraftLineParser : public docraft::craft::IDocraftParser
Parser for line nodes.
Public Functions
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
Parses a line XML node.
- Parameters:
craft_language_source – XML node.
- Returns:
Parsed line node.
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
-
class DocraftPolygonParser : public docraft::craft::IDocraftParser
Parser for polygon nodes.
Public Functions
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
Parses a polygon XML node.
- Parameters:
craft_language_source – XML node.
- Returns:
Parsed polygon node.
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
-
class DocraftTableParser : public docraft::craft::IDocraftParser
Parser for table nodes.
Public Functions
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
Parses a table XML node.
- Parameters:
craft_language_source – XML node.
- Returns:
Parsed table node.
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
-
class DocraftListParser : public docraft::craft::IDocraftParser
Parser for list nodes.
Public Functions
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
Parses a list XML node.
- Parameters:
craft_language_source – XML node.
- Returns:
Parsed list node.
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
-
class DocraftUListParser : public docraft::craft::IDocraftParser
Parser for unordered list nodes.
Public Functions
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
Parses an unordered list XML node.
- Parameters:
craft_language_source – XML node.
- Returns:
Parsed unordered list node.
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
-
class DocraftLayoutParser : public docraft::craft::IDocraftParser
Parser for layout nodes.
Public Functions
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
Parses a layout XML node.
- Parameters:
craft_language_source – XML node.
- Returns:
Parsed layout node.
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
-
class DocraftBlackLineParser : public docraft::craft::IDocraftParser
Parser for blank line nodes.
Public Functions
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
Parses a blank line XML node.
- Parameters:
craft_language_source – XML node.
- Returns:
Parsed blank line node.
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
-
class DocraftNewPageParser : public docraft::craft::IDocraftParser
Parser for manual page break nodes.
Public Functions
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
Parses a NewPage XML node.
- Parameters:
craft_language_source – XML node.
- Returns:
Parsed NewPage node.
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
-
class DocraftPageNumberParser : public docraft::craft::IDocraftParser
Parser for page number nodes.
Public Functions
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
Parses a page number XML node.
- Parameters:
craft_language_source – XML node.
- Returns:
Parsed page number node.
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
-
class DocraftSettingsParser : public docraft::craft::IDocraftParser
Parser for settings nodes.
Public Functions
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
Parses a settings XML node.
- Parameters:
craft_language_source – XML node.
- Returns:
Parsed settings node.
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
-
class DocraftHeaderParser : public docraft::craft::parser::DocraftRectangleParser
Parser for header sections.
Public Functions
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
Parses a header XML node.
- Parameters:
craft_language_source – XML node.
- Returns:
Parsed header node.
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
-
class DocraftBodyParser : public docraft::craft::parser::DocraftRectangleParser
Parser for body sections.
Public Functions
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
Parses a body XML node.
- Parameters:
craft_language_source – XML node.
- Returns:
Parsed body node.
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
Parser for footer sections.
Public Functions
Parses a footer XML node.
- Parameters:
craft_language_source – XML node.
- Returns:
Parsed footer node.
-
class DocraftForeachParser : public docraft::craft::IDocraftParser
Parser for foreach nodes.
- Param craft_language_source:
XML node.
- Return:
Parsed foreach node.
Public Functions
-
DocraftForeachParser(DocraftCraftLanguageParser *craft_language_parser)
-
virtual std::shared_ptr<model::DocraftNode> parse(const pugi::xml_node &craft_language_source) override
Parses a foreach XML node.
- Parameters:
craft_language_source – XML node.
- Returns:
Parsed foreach node.