fixup! Docs: WIP dump_cmds_json

This commit is contained in:
Krystine Sherwin 2025-01-10 07:23:11 +13:00
parent 16ee093dd9
commit 023a1e3c03
No known key found for this signature in database
1 changed files with 12 additions and 14 deletions

View File

@ -945,12 +945,12 @@ struct HelpPass : public Pass {
auto name = it.first; auto name = it.first;
auto pass = it.second; auto pass = it.second;
auto title = pass->short_help; auto title = pass->short_help;
vector<PassUsageBlock *> usages; vector<PassUsageBlock> usages;
auto experimental_flag = pass->experimental_flag; auto experimental_flag = pass->experimental_flag;
if (pass->HasUsages()) { if (pass->HasUsages()) {
for (auto usage : pass->pass_usages) for (auto usage : pass->pass_usages)
usages.push_back(&usage); usages.push_back(usage);
} else { } else {
enum PassUsageState { enum PassUsageState {
PUState_signature, PUState_signature,
@ -971,7 +971,6 @@ struct HelpPass : public Pass {
int blank_count = 0; int blank_count = 0;
size_t def_strip_count = 0; size_t def_strip_count = 0;
auto current_state = PUState_postscript; auto current_state = PUState_postscript;
PassUsageBlock *current_usage;
auto catch_verific = false; auto catch_verific = false;
for (string line; std::getline(ss, line, '\n');) { for (string line; std::getline(ss, line, '\n');) {
// find position of first non space character // find position of first non space character
@ -1000,8 +999,7 @@ struct HelpPass : public Pass {
if (NewUsage) { if (NewUsage) {
current_state = PUState_signature; current_state = PUState_signature;
current_usage = new PassUsageBlock(); usages.push_back({});
usages.push_back(current_usage);
def_strip_count = first_pos; def_strip_count = first_pos;
catch_verific = false; catch_verific = false;
} else if (IsDedent) { } else if (IsDedent) {
@ -1014,19 +1012,19 @@ struct HelpPass : public Pass {
if (IsDefinition && IsIndent && !catch_verific) { if (IsDefinition && IsIndent && !catch_verific) {
current_state = PUState_options; current_state = PUState_options;
current_usage->options.push_back(PassOption({stripped_line, ""})); usages.back().options.push_back(PassOption({stripped_line, ""}));
def_strip_count = first_pos; def_strip_count = first_pos;
} else { } else {
string *desc_str; string *desc_str;
if (current_state == PUState_signature) { if (current_state == PUState_signature) {
desc_str = &(current_usage->signature); desc_str = &(usages.back().signature);
blank_count += 1; blank_count += 1;
} else if (current_state == PUState_description) { } else if (current_state == PUState_description) {
desc_str = &(current_usage->description); desc_str = &(usages.back().description);
} else if (current_state == PUState_options) { } else if (current_state == PUState_options) {
desc_str = &(current_usage->options.back().description); desc_str = &(usages.back().options.back().description);
} else if (current_state == PUState_postscript) { } else if (current_state == PUState_postscript) {
desc_str = &(current_usage->postscript); desc_str = &(usages.back().postscript);
} else { } else {
log_abort(); log_abort();
} }
@ -1050,17 +1048,17 @@ struct HelpPass : public Pass {
json.name("usages"); json.begin_array(); json.name("usages"); json.begin_array();
for (auto usage : usages) { for (auto usage : usages) {
json.begin_object(); json.begin_object();
json.entry("signature", usage->signature); json.entry("signature", usage.signature);
json.entry("description", usage->description); json.entry("description", usage.description);
json.name("options"); json.begin_array(); json.name("options"); json.begin_array();
for (auto option : usage->options) { for (auto option : usage.options) {
json.begin_array(); json.begin_array();
json.value(option.keyword); json.value(option.keyword);
json.value(option.description); json.value(option.description);
json.end_array(); json.end_array();
} }
json.end_array(); json.end_array();
json.entry("postscript", usage->postscript); json.entry("postscript", usage.postscript);
json.end_object(); json.end_object();
} }
json.end_array(); json.end_array();