struct EE::UI::Doc::SyntaxPattern

#include <syntaxdefinition.hpp>

struct SyntaxPattern {
    // typedefs

    typedef std::function<std::string(const SyntaxPattern&, const std::string_view&)> DynamicSyntax;

    // enums

    enum Flags;

    // fields

    static SyntaxDefMap<SyntaxStyleType, std::string> SyntaxStyleTypeCache;
    std::vector<std::string> patterns;
    std::vector<SyntaxStyleType> types;
    std::vector<SyntaxStyleType> endTypes;
    std::vector<std::string> typesNames;
    std::vector<std::string> endTypesNames;
    std::string syntax { "" };
    DynamicSyntax dynSyntax;
    SyntaxPatternMatchType matchType { SyntaxPatternMatchType::LuaPattern };
    const SyntaxDefinition* def { nullptr };
    Uint16 flags { 0 };
    Uint16 repositoryIdx { 0 };
    std::vector<SyntaxPattern> contentPatterns;
    String::HashType contentScopeRepoHash {         0 };

    // construction

    SyntaxPattern(std::vector<std::string>&& _patterns, const std::string& _type, const std::string& _syntax = "", SyntaxPatternMatchType matchType = SyntaxPatternMatchType::LuaPattern);
    SyntaxPattern(std::vector<std::string>&& _patterns, std::vector<std::string>&& _types, const std::string& _syntax = "", SyntaxPatternMatchType matchType = SyntaxPatternMatchType::LuaPattern);
    SyntaxPattern(std::vector<std::string>&& _patterns, std::vector<std::string>&& _types, std::vector<std::string>&& _endTypes, const std::string& _syntax = "", SyntaxPatternMatchType matchType = SyntaxPatternMatchType::LuaPattern);
    SyntaxPattern(std::vector<std::string>&& _patterns, std::vector<std::string>&& _types, std::vector<std::string>&& _endTypes, const std::string& _syntax, SyntaxPatternMatchType matchType, std::vector<SyntaxPattern>&& _subPatterns);
    SyntaxPattern(std::vector<std::string>&& _patterns, const std::string& _type, DynamicSyntax&& _syntax, SyntaxPatternMatchType matchType = SyntaxPatternMatchType::LuaPattern);
    SyntaxPattern(std::vector<std::string>&& _patterns, std::vector<std::string>&& _types, DynamicSyntax&& _syntax, SyntaxPatternMatchType matchType = SyntaxPatternMatchType::LuaPattern);
    SyntaxPattern(std::vector<std::string>&& _patterns, std::vector<std::string>&& _types, std::vector<std::string>&& _endTypes, DynamicSyntax&& _syntax, SyntaxPatternMatchType matchType = SyntaxPatternMatchType::LuaPattern);

    // methods

    bool hasSyntax() const;
    bool hasSyntaxOrContentScope() const;
    bool isPure() const;
    bool isInclude() const;
    bool isRepositoryInclude() const;
    bool isRootSelfInclude() const;
    bool isRangedMatch() const;
    bool isSimpleRangedMatch() const;
    std::string_view getRepositoryName() const;
    bool checkIsIncludePattern() const;
    bool checkIsRangedMatch() const;
    bool checkIsRootSelfInclude() const;
    bool checkIsRepositoryInclude() const;
    bool hasContentScope() const;
};