Utility for consistent output formatting across commands. More...
#include <command_context.h>
Public Types | |
enum class | Format { kJson , kText } |
Public Member Functions | |
OutputFormatter (Format format) | |
void | BeginObject (const std::string &title="") |
Start a JSON object or text section. | |
void | EndObject () |
End a JSON object or text section. | |
void | AddField (const std::string &key, const std::string &value) |
Add a key-value pair. | |
void | AddField (const std::string &key, int value) |
void | AddField (const std::string &key, uint64_t value) |
void | AddField (const std::string &key, bool value) |
void | AddHexField (const std::string &key, uint64_t value, int width=2) |
Add a hex-formatted field. | |
void | BeginArray (const std::string &key) |
Begin an array. | |
void | EndArray () |
End an array. | |
void | AddArrayItem (const std::string &item) |
Add an item to current array. | |
std::string | GetOutput () const |
Get the formatted output. | |
void | Print () const |
Print the formatted output to stdout. | |
bool | IsJson () const |
Check if using JSON format. | |
bool | IsText () const |
Check if using text format. | |
Static Public Member Functions | |
static absl::StatusOr< OutputFormatter > | FromString (const std::string &format) |
Create formatter from string ("json" or "text") | |
Private Member Functions | |
void | AddIndent () |
std::string | EscapeJson (const std::string &str) const |
Private Attributes | |
Format | format_ |
std::string | buffer_ |
int | indent_level_ = 0 |
bool | first_field_ = true |
bool | in_array_ = false |
int | array_item_count_ = 0 |
Utility for consistent output formatting across commands.
Definition at line 121 of file command_context.h.
|
strong |
Enumerator | |
---|---|
kJson | |
kText |
Definition at line 123 of file command_context.h.
|
inlineexplicit |
Definition at line 128 of file command_context.h.
|
static |
Create formatter from string ("json" or "text")
Definition at line 248 of file command_context.cc.
Referenced by yaze::cli::resources::CommandHandler::Run(), yaze::cli::resources::TEST_F(), yaze::cli::resources::TEST_F(), yaze::cli::resources::TEST_F(), yaze::cli::resources::TEST_F(), yaze::cli::resources::TEST_F(), and yaze::cli::resources::TEST_F().
void yaze::cli::resources::OutputFormatter::BeginObject | ( | const std::string & | title = "" | ) |
Start a JSON object or text section.
Definition at line 262 of file command_context.cc.
References buffer_, first_field_, indent_level_, IsJson(), and IsText().
Referenced by yaze::cli::handlers::DialogueListCommandHandler::Execute(), yaze::cli::handlers::DialogueReadCommandHandler::Execute(), yaze::cli::handlers::DialogueSearchCommandHandler::Execute(), yaze::cli::handlers::DungeonListSpritesCommandHandler::Execute(), yaze::cli::handlers::DungeonDescribeRoomCommandHandler::Execute(), yaze::cli::handlers::DungeonExportRoomCommandHandler::Execute(), yaze::cli::handlers::DungeonListObjectsCommandHandler::Execute(), yaze::cli::handlers::DungeonGetRoomTilesCommandHandler::Execute(), yaze::cli::handlers::DungeonSetRoomPropertyCommandHandler::Execute(), yaze::cli::handlers::MessageListCommandHandler::Execute(), yaze::cli::handlers::MessageReadCommandHandler::Execute(), yaze::cli::handlers::MessageSearchCommandHandler::Execute(), yaze::cli::handlers::MusicListCommandHandler::Execute(), yaze::cli::handlers::MusicInfoCommandHandler::Execute(), yaze::cli::handlers::MusicTracksCommandHandler::Execute(), yaze::cli::handlers::OverworldFindTileCommandHandler::Execute(), yaze::cli::handlers::OverworldDescribeMapCommandHandler::Execute(), yaze::cli::handlers::OverworldListWarpsCommandHandler::Execute(), yaze::cli::handlers::OverworldListSpritesCommandHandler::Execute(), yaze::cli::handlers::OverworldGetEntranceCommandHandler::Execute(), yaze::cli::handlers::OverworldTileStatsCommandHandler::Execute(), yaze::cli::handlers::HexReadCommandHandler::Execute(), yaze::cli::handlers::HexWriteCommandHandler::Execute(), yaze::cli::handlers::HexSearchCommandHandler::Execute(), yaze::cli::handlers::PaletteGetColorsCommandHandler::Execute(), yaze::cli::handlers::PaletteSetColorCommandHandler::Execute(), yaze::cli::handlers::PaletteAnalyzeCommandHandler::Execute(), yaze::cli::handlers::SpriteListCommandHandler::Execute(), yaze::cli::handlers::SpritePropertiesCommandHandler::Execute(), yaze::cli::handlers::SpritePaletteCommandHandler::Execute(), yaze::cli::handlers::EmulatorStepCommandHandler::Execute(), yaze::cli::handlers::EmulatorRunCommandHandler::Execute(), yaze::cli::handlers::EmulatorPauseCommandHandler::Execute(), yaze::cli::handlers::EmulatorResetCommandHandler::Execute(), yaze::cli::handlers::EmulatorGetStateCommandHandler::Execute(), yaze::cli::handlers::EmulatorSetBreakpointCommandHandler::Execute(), yaze::cli::handlers::EmulatorClearBreakpointCommandHandler::Execute(), yaze::cli::handlers::EmulatorListBreakpointsCommandHandler::Execute(), yaze::cli::handlers::EmulatorReadMemoryCommandHandler::Execute(), yaze::cli::handlers::EmulatorWriteMemoryCommandHandler::Execute(), yaze::cli::handlers::EmulatorGetRegistersCommandHandler::Execute(), yaze::cli::handlers::EmulatorGetMetricsCommandHandler::Execute(), yaze::cli::handlers::EmulatorPressButtonsCommandHandler::Execute(), yaze::cli::handlers::EmulatorReleaseButtonsCommandHandler::Execute(), yaze::cli::handlers::EmulatorHoldButtonsCommandHandler::Execute(), yaze::cli::handlers::GuiPlaceTileCommandHandler::Execute(), yaze::cli::handlers::GuiClickCommandHandler::Execute(), yaze::cli::handlers::GuiDiscoverToolCommandHandler::Execute(), yaze::cli::handlers::GuiScreenshotCommandHandler::Execute(), yaze::cli::handlers::ResourceListCommandHandler::Execute(), yaze::cli::handlers::ResourceSearchCommandHandler::Execute(), and yaze::cli::resources::CommandHandler::Run().
void yaze::cli::resources::OutputFormatter::EndObject | ( | ) |
End a JSON object or text section.
Definition at line 272 of file command_context.cc.
References AddIndent(), buffer_, indent_level_, and IsJson().
Referenced by yaze::cli::handlers::DialogueListCommandHandler::Execute(), yaze::cli::handlers::DialogueReadCommandHandler::Execute(), yaze::cli::handlers::DialogueSearchCommandHandler::Execute(), yaze::cli::handlers::DungeonListSpritesCommandHandler::Execute(), yaze::cli::handlers::DungeonDescribeRoomCommandHandler::Execute(), yaze::cli::handlers::DungeonExportRoomCommandHandler::Execute(), yaze::cli::handlers::DungeonListObjectsCommandHandler::Execute(), yaze::cli::handlers::DungeonGetRoomTilesCommandHandler::Execute(), yaze::cli::handlers::DungeonSetRoomPropertyCommandHandler::Execute(), yaze::cli::handlers::MessageListCommandHandler::Execute(), yaze::cli::handlers::MessageReadCommandHandler::Execute(), yaze::cli::handlers::MessageSearchCommandHandler::Execute(), yaze::cli::handlers::MusicListCommandHandler::Execute(), yaze::cli::handlers::MusicInfoCommandHandler::Execute(), yaze::cli::handlers::MusicTracksCommandHandler::Execute(), yaze::cli::handlers::OverworldFindTileCommandHandler::Execute(), yaze::cli::handlers::OverworldDescribeMapCommandHandler::Execute(), yaze::cli::handlers::OverworldListWarpsCommandHandler::Execute(), yaze::cli::handlers::OverworldListSpritesCommandHandler::Execute(), yaze::cli::handlers::OverworldGetEntranceCommandHandler::Execute(), yaze::cli::handlers::OverworldTileStatsCommandHandler::Execute(), yaze::cli::handlers::HexReadCommandHandler::Execute(), yaze::cli::handlers::HexWriteCommandHandler::Execute(), yaze::cli::handlers::HexSearchCommandHandler::Execute(), yaze::cli::handlers::PaletteGetColorsCommandHandler::Execute(), yaze::cli::handlers::PaletteSetColorCommandHandler::Execute(), yaze::cli::handlers::PaletteAnalyzeCommandHandler::Execute(), yaze::cli::handlers::SpriteListCommandHandler::Execute(), yaze::cli::handlers::SpritePropertiesCommandHandler::Execute(), yaze::cli::handlers::SpritePaletteCommandHandler::Execute(), yaze::cli::handlers::EmulatorStepCommandHandler::Execute(), yaze::cli::handlers::EmulatorRunCommandHandler::Execute(), yaze::cli::handlers::EmulatorPauseCommandHandler::Execute(), yaze::cli::handlers::EmulatorResetCommandHandler::Execute(), yaze::cli::handlers::EmulatorGetStateCommandHandler::Execute(), yaze::cli::handlers::EmulatorSetBreakpointCommandHandler::Execute(), yaze::cli::handlers::EmulatorClearBreakpointCommandHandler::Execute(), yaze::cli::handlers::EmulatorListBreakpointsCommandHandler::Execute(), yaze::cli::handlers::EmulatorReadMemoryCommandHandler::Execute(), yaze::cli::handlers::EmulatorWriteMemoryCommandHandler::Execute(), yaze::cli::handlers::EmulatorGetRegistersCommandHandler::Execute(), yaze::cli::handlers::EmulatorGetMetricsCommandHandler::Execute(), yaze::cli::handlers::EmulatorPressButtonsCommandHandler::Execute(), yaze::cli::handlers::EmulatorReleaseButtonsCommandHandler::Execute(), yaze::cli::handlers::EmulatorHoldButtonsCommandHandler::Execute(), yaze::cli::handlers::GuiPlaceTileCommandHandler::Execute(), yaze::cli::handlers::GuiClickCommandHandler::Execute(), yaze::cli::handlers::GuiDiscoverToolCommandHandler::Execute(), yaze::cli::handlers::GuiScreenshotCommandHandler::Execute(), yaze::cli::handlers::ResourceListCommandHandler::Execute(), yaze::cli::handlers::ResourceSearchCommandHandler::Execute(), and yaze::cli::resources::CommandHandler::Run().
void yaze::cli::resources::OutputFormatter::AddField | ( | const std::string & | key, |
const std::string & | value | ||
) |
Add a key-value pair.
Definition at line 281 of file command_context.cc.
References AddIndent(), buffer_, EscapeJson(), first_field_, and IsJson().
Referenced by yaze::cli::handlers::DialogueListCommandHandler::Execute(), yaze::cli::handlers::DialogueReadCommandHandler::Execute(), yaze::cli::handlers::DialogueSearchCommandHandler::Execute(), yaze::cli::handlers::DungeonListSpritesCommandHandler::Execute(), yaze::cli::handlers::DungeonDescribeRoomCommandHandler::Execute(), yaze::cli::handlers::DungeonExportRoomCommandHandler::Execute(), yaze::cli::handlers::DungeonListObjectsCommandHandler::Execute(), yaze::cli::handlers::DungeonGetRoomTilesCommandHandler::Execute(), yaze::cli::handlers::DungeonSetRoomPropertyCommandHandler::Execute(), yaze::cli::handlers::MessageListCommandHandler::Execute(), yaze::cli::handlers::MessageReadCommandHandler::Execute(), yaze::cli::handlers::MessageSearchCommandHandler::Execute(), yaze::cli::handlers::MusicListCommandHandler::Execute(), yaze::cli::handlers::MusicInfoCommandHandler::Execute(), yaze::cli::handlers::MusicTracksCommandHandler::Execute(), yaze::cli::handlers::OverworldFindTileCommandHandler::Execute(), yaze::cli::handlers::OverworldDescribeMapCommandHandler::Execute(), yaze::cli::handlers::OverworldListWarpsCommandHandler::Execute(), yaze::cli::handlers::OverworldListSpritesCommandHandler::Execute(), yaze::cli::handlers::OverworldGetEntranceCommandHandler::Execute(), yaze::cli::handlers::OverworldTileStatsCommandHandler::Execute(), yaze::cli::handlers::HexReadCommandHandler::Execute(), yaze::cli::handlers::HexWriteCommandHandler::Execute(), yaze::cli::handlers::HexSearchCommandHandler::Execute(), yaze::cli::handlers::PaletteGetColorsCommandHandler::Execute(), yaze::cli::handlers::PaletteSetColorCommandHandler::Execute(), yaze::cli::handlers::PaletteAnalyzeCommandHandler::Execute(), yaze::cli::handlers::SpriteListCommandHandler::Execute(), yaze::cli::handlers::SpritePropertiesCommandHandler::Execute(), yaze::cli::handlers::SpritePaletteCommandHandler::Execute(), yaze::cli::handlers::ProjectInitCommandHandler::Execute(), yaze::cli::handlers::ProjectBuildCommandHandler::Execute(), yaze::cli::handlers::RomInfoCommandHandler::Execute(), yaze::cli::handlers::RomValidateCommandHandler::Execute(), yaze::cli::handlers::RomDiffCommandHandler::Execute(), yaze::cli::handlers::RomGenerateGoldenCommandHandler::Execute(), yaze::cli::handlers::EmulatorStepCommandHandler::Execute(), yaze::cli::handlers::EmulatorRunCommandHandler::Execute(), yaze::cli::handlers::EmulatorPauseCommandHandler::Execute(), yaze::cli::handlers::EmulatorResetCommandHandler::Execute(), yaze::cli::handlers::EmulatorGetStateCommandHandler::Execute(), yaze::cli::handlers::EmulatorSetBreakpointCommandHandler::Execute(), yaze::cli::handlers::EmulatorClearBreakpointCommandHandler::Execute(), yaze::cli::handlers::EmulatorListBreakpointsCommandHandler::Execute(), yaze::cli::handlers::EmulatorReadMemoryCommandHandler::Execute(), yaze::cli::handlers::EmulatorWriteMemoryCommandHandler::Execute(), yaze::cli::handlers::EmulatorGetRegistersCommandHandler::Execute(), yaze::cli::handlers::EmulatorGetMetricsCommandHandler::Execute(), yaze::cli::handlers::EmulatorPressButtonsCommandHandler::Execute(), yaze::cli::handlers::EmulatorReleaseButtonsCommandHandler::Execute(), yaze::cli::handlers::EmulatorHoldButtonsCommandHandler::Execute(), yaze::cli::handlers::GuiPlaceTileCommandHandler::Execute(), yaze::cli::handlers::GuiClickCommandHandler::Execute(), yaze::cli::handlers::GuiDiscoverToolCommandHandler::Execute(), yaze::cli::handlers::GuiScreenshotCommandHandler::Execute(), yaze::cli::handlers::ResourceListCommandHandler::Execute(), and yaze::cli::handlers::ResourceSearchCommandHandler::Execute().
void yaze::cli::resources::OutputFormatter::AddField | ( | const std::string & | key, |
int | value | ||
) |
Definition at line 294 of file command_context.cc.
References AddIndent(), buffer_, EscapeJson(), first_field_, and IsJson().
void yaze::cli::resources::OutputFormatter::AddField | ( | const std::string & | key, |
uint64_t | value | ||
) |
Definition at line 307 of file command_context.cc.
References AddIndent(), buffer_, EscapeJson(), first_field_, and IsJson().
void yaze::cli::resources::OutputFormatter::AddField | ( | const std::string & | key, |
bool | value | ||
) |
Definition at line 320 of file command_context.cc.
References AddIndent(), buffer_, EscapeJson(), first_field_, and IsJson().
void yaze::cli::resources::OutputFormatter::AddHexField | ( | const std::string & | key, |
uint64_t | value, | ||
int | width = 2 |
||
) |
Add a hex-formatted field.
Definition at line 334 of file command_context.cc.
References AddIndent(), buffer_, EscapeJson(), first_field_, and IsJson().
Referenced by yaze::cli::handlers::HexReadCommandHandler::Execute(), yaze::cli::handlers::HexWriteCommandHandler::Execute(), yaze::cli::handlers::HexSearchCommandHandler::Execute(), yaze::cli::handlers::SpritePropertiesCommandHandler::Execute(), yaze::cli::handlers::SpritePaletteCommandHandler::Execute(), and yaze::cli::handlers::EmulatorReadMemoryCommandHandler::Execute().
void yaze::cli::resources::OutputFormatter::BeginArray | ( | const std::string & | key | ) |
Begin an array.
Definition at line 348 of file command_context.cc.
References AddIndent(), array_item_count_, buffer_, EscapeJson(), first_field_, in_array_, indent_level_, and IsJson().
Referenced by yaze::cli::handlers::DialogueListCommandHandler::Execute(), yaze::cli::handlers::DialogueSearchCommandHandler::Execute(), yaze::cli::handlers::DungeonListSpritesCommandHandler::Execute(), yaze::cli::handlers::DungeonListObjectsCommandHandler::Execute(), yaze::cli::handlers::DungeonGetRoomTilesCommandHandler::Execute(), yaze::cli::handlers::MessageListCommandHandler::Execute(), yaze::cli::handlers::MessageSearchCommandHandler::Execute(), yaze::cli::handlers::MusicListCommandHandler::Execute(), yaze::cli::handlers::MusicTracksCommandHandler::Execute(), yaze::cli::handlers::OverworldFindTileCommandHandler::Execute(), yaze::cli::handlers::OverworldListWarpsCommandHandler::Execute(), yaze::cli::handlers::OverworldListSpritesCommandHandler::Execute(), yaze::cli::handlers::OverworldTileStatsCommandHandler::Execute(), yaze::cli::handlers::HexSearchCommandHandler::Execute(), yaze::cli::handlers::PaletteGetColorsCommandHandler::Execute(), yaze::cli::handlers::SpriteListCommandHandler::Execute(), yaze::cli::handlers::SpritePaletteCommandHandler::Execute(), yaze::cli::handlers::GuiDiscoverToolCommandHandler::Execute(), and yaze::cli::handlers::ResourceSearchCommandHandler::Execute().
void yaze::cli::resources::OutputFormatter::EndArray | ( | ) |
End an array.
Definition at line 365 of file command_context.cc.
References AddIndent(), buffer_, in_array_, indent_level_, and IsJson().
Referenced by yaze::cli::handlers::DialogueListCommandHandler::Execute(), yaze::cli::handlers::DialogueSearchCommandHandler::Execute(), yaze::cli::handlers::DungeonListSpritesCommandHandler::Execute(), yaze::cli::handlers::DungeonListObjectsCommandHandler::Execute(), yaze::cli::handlers::DungeonGetRoomTilesCommandHandler::Execute(), yaze::cli::handlers::MessageListCommandHandler::Execute(), yaze::cli::handlers::MessageSearchCommandHandler::Execute(), yaze::cli::handlers::MusicListCommandHandler::Execute(), yaze::cli::handlers::MusicTracksCommandHandler::Execute(), yaze::cli::handlers::OverworldFindTileCommandHandler::Execute(), yaze::cli::handlers::OverworldListWarpsCommandHandler::Execute(), yaze::cli::handlers::OverworldListSpritesCommandHandler::Execute(), yaze::cli::handlers::OverworldTileStatsCommandHandler::Execute(), yaze::cli::handlers::HexSearchCommandHandler::Execute(), yaze::cli::handlers::PaletteGetColorsCommandHandler::Execute(), yaze::cli::handlers::SpriteListCommandHandler::Execute(), yaze::cli::handlers::SpritePaletteCommandHandler::Execute(), yaze::cli::handlers::GuiDiscoverToolCommandHandler::Execute(), and yaze::cli::handlers::ResourceSearchCommandHandler::Execute().
void yaze::cli::resources::OutputFormatter::AddArrayItem | ( | const std::string & | item | ) |
Add an item to current array.
Definition at line 376 of file command_context.cc.
References AddIndent(), array_item_count_, buffer_, EscapeJson(), and IsJson().
Referenced by yaze::cli::handlers::HexSearchCommandHandler::Execute(), yaze::cli::handlers::PaletteGetColorsCommandHandler::Execute(), yaze::cli::handlers::SpriteListCommandHandler::Execute(), yaze::cli::handlers::SpritePaletteCommandHandler::Execute(), yaze::cli::handlers::GuiDiscoverToolCommandHandler::Execute(), and yaze::cli::handlers::ResourceSearchCommandHandler::Execute().
std::string yaze::cli::resources::OutputFormatter::GetOutput | ( | ) | const |
void yaze::cli::resources::OutputFormatter::Print | ( | ) | const |
Print the formatted output to stdout.
Definition at line 393 of file command_context.cc.
References buffer_, and IsJson().
Referenced by yaze::cli::resources::CommandHandler::Run().
|
inline |
Check if using JSON format.
Definition at line 186 of file command_context.h.
References format_, and kJson.
Referenced by AddArrayItem(), AddField(), AddField(), AddField(), AddField(), AddHexField(), BeginArray(), BeginObject(), EndArray(), EndObject(), and Print().
|
inline |
Check if using text format.
Definition at line 191 of file command_context.h.
References format_, and kText.
Referenced by BeginObject().
|
private |
Definition at line 400 of file command_context.cc.
References buffer_, and indent_level_.
Referenced by AddArrayItem(), AddField(), AddField(), AddField(), AddField(), AddHexField(), BeginArray(), EndArray(), and EndObject().
|
private |
Definition at line 406 of file command_context.cc.
Referenced by AddArrayItem(), AddField(), AddField(), AddField(), AddField(), AddHexField(), and BeginArray().
|
private |
Definition at line 194 of file command_context.h.
|
private |
Definition at line 195 of file command_context.h.
Referenced by AddArrayItem(), AddField(), AddField(), AddField(), AddField(), AddHexField(), AddIndent(), BeginArray(), BeginObject(), EndArray(), EndObject(), GetOutput(), and Print().
|
private |
Definition at line 196 of file command_context.h.
Referenced by AddIndent(), BeginArray(), BeginObject(), EndArray(), and EndObject().
|
private |
Definition at line 197 of file command_context.h.
Referenced by AddField(), AddField(), AddField(), AddField(), AddHexField(), BeginArray(), and BeginObject().
|
private |
Definition at line 198 of file command_context.h.
Referenced by BeginArray(), and EndArray().
|
private |
Definition at line 199 of file command_context.h.
Referenced by AddArrayItem(), and BeginArray().