AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
Acore::Impl::ChatCommands::MultiConsumer< Tuple, Optional< NestedNextType >, offset > Struct Template Reference

#include "ChatCommand.h"

Static Public Member Functions

static ChatCommandResult TryConsumeTo (Tuple &tuple, ChatHandler const *handler, std::string_view args)
 

Detailed Description

template<typename Tuple, typename NestedNextType, size_t offset>
struct Acore::Impl::ChatCommands::MultiConsumer< Tuple, Optional< NestedNextType >, offset >

Member Function Documentation

◆ TryConsumeTo()

template<typename Tuple , typename NestedNextType , size_t offset>
static ChatCommandResult Acore::Impl::ChatCommands::MultiConsumer< Tuple, Optional< NestedNextType >, offset >::TryConsumeTo ( Tuple &  tuple,
ChatHandler const *  handler,
std::string_view  args 
)
inlinestatic
78 {
79 // try with the argument
80 auto& myArg = std::get<offset>(tuple);
81 myArg.emplace();
82
83 ChatCommandResult result1 = ArgInfo<NestedNextType>::TryConsume(myArg.value(), handler, args);
84 if (result1)
85 if ((result1 = ConsumeFromOffset<Tuple, offset + 1>(tuple, handler, *result1)))
86 return result1;
87 // try again omitting the argument
88 myArg = std::nullopt;
89 ChatCommandResult result2 = ConsumeFromOffset<Tuple, offset + 1>(tuple, handler, args);
90 if (result2)
91 return result2;
92 if (result1.HasErrorMessage() && result2.HasErrorMessage())
93 {
94 return Acore::StringFormatFmt("{} \"{}\"\n{} \"{}\"",
97 }
98 else if (result1.HasErrorMessage())
99 return result1;
100 else
101 return result2;
102 }
@ LANG_CMDPARSER_EITHER
Definition: Language.h:1009
@ LANG_CMDPARSER_OR
Definition: Language.h:1010
std::string StringFormatFmt(FormatString< Args... > fmt, Args &&... args)
Definition: StringFormat.h:48
AC_GAME_API char const * GetAcoreString(ChatHandler const *handler, AcoreStrings which)
Definition: ChatCommandHelpers.cpp:28
Definition: ChatCommandHelpers.h:101
bool HasErrorMessage() const
Definition: ChatCommandHelpers.h:116
std::string const & GetErrorMessage() const
Definition: ChatCommandHelpers.h:117

References Acore::Impl::ChatCommands::GetAcoreString(), Acore::Impl::ChatCommands::ChatCommandResult::GetErrorMessage(), Acore::Impl::ChatCommands::ChatCommandResult::HasErrorMessage(), LANG_CMDPARSER_EITHER, LANG_CMDPARSER_OR, and Acore::StringFormatFmt().