3#include "absl/strings/ascii.h"
4#include "absl/strings/match.h"
5#include "absl/strings/str_format.h"
6#include "absl/strings/str_split.h"
16 auto type = parser.
GetString(
"type").value();
21 formatter.
BeginObject(absl::StrFormat(
"%s Labels", absl::AsciiStrToUpper(type)));
22 for (
const auto& [key, value] : labels) {
27 return absl::OkStatus();
32 auto query = parser.
GetString(
"query").value();
33 auto type = parser.
GetString(
"type").value_or(
"all");
37 std::vector<std::string> categories = {
"overworld",
"dungeon",
"entrance",
38 "room",
"sprite",
"palette",
"item"};
45 formatter.
AddField(
"search_type", type);
47 int total_matches = 0;
50 for (
const auto& category : categories) {
51 auto labels_or = builder.
GetLabels(category);
52 if (!labels_or.ok())
continue;
54 auto labels = labels_or.value();
55 for (
const auto& [key, value] : labels) {
56 if (absl::StrContains(absl::AsciiStrToLower(value),
57 absl::AsciiStrToLower(query))) {
59 category, key, value));
66 formatter.
AddField(
"total_matches", total_matches);
69 return absl::OkStatus();
The Rom class is used to load, save, and modify Rom data.
Builds contextual information from ROM resources for AI prompts.
absl::StatusOr< std::map< std::string, std::string > > GetLabels(const std::string &category)
Get labels for a specific resource category.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
Utility for parsing common CLI argument patterns.
std::optional< std::string > GetString(const std::string &name) const
Parse a named argument (e.g., –format=json or –format json)
#define ASSIGN_OR_RETURN(type_variable_name, expression)
Main namespace for the application.