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
79 {
80 // try with the argument
81 auto& myArg = std::get<offset>(tuple);
82 myArg.emplace();
83
84 ChatCommandResult result1 = ArgInfo<NestedNextType>::TryConsume(myArg.value(), handler, args);
85 if (result1)
86 if ((result1 = ConsumeFromOffset<Tuple, offset + 1>(tuple, handler, *result1)))
87 return result1;
88 // try again omitting the argument
89 myArg = std::nullopt;
90 ChatCommandResult result2 = ConsumeFromOffset<Tuple, offset + 1>(tuple, handler, args);
91 if (result2)
92 return result2;
93 if (result1.HasErrorMessage() && result2.HasErrorMessage())
94 {
95 return Acore::StringFormatFmt("{} \"{}\"\n{} \"{}\"",
98 }
99 else if (result1.HasErrorMessage())
100 return result1;
101 else
102 return result2;
103 }
@ LANG_CMDPARSER_EITHER
Definition: Language.h:1000
@ LANG_CMDPARSER_OR
Definition: Language.h:1001
std::string StringFormatFmt(std::string_view fmt, Args &&... args)
Definition: StringFormat.h:44
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().