Files
JetCore/__dump.cpp
T
Brad Arant a7dab09150 Add DEFINED TAGS listing to <dump> output
Custom <tag name=...> definitions have no scope levels the way variables
do - __tag.cpp always registers into the single global.tags map regardless
of where in the script the definition sits, so this is one flat list, not
broken out by global/local/parent like the existing variable/keyword
sections. Verified end-to-end via a real jet-2.0 run: two tags defined
before <dump> both appear correctly in the DEFINED TAGS section.
2026-08-26 09:18:24 -07:00

50 lines
1.9 KiB
C++

#include "__dump.h"
#include "Exception.h"
#include <iostream>
#include <fstream>
namespace jet {
__dump::__dump(coreutils::ZString &in, coreutils::MString &parentOut, Global &global, Tag *parent, Tag *local) : Tag(in, parentOut, global, parent, local) {
if(!keywordDefined("file"))
throw coreutils::Exception("file must be sppecified for dump tag.");
std::ofstream outFile(keywords["file"].str());
if(global.cgi) {
outFile << "*** CGI VARIABLES ***" << std::endl;
// for (auto i = global.cgiVariables.begin(); i != global.cgiVariables.end(); i++)
// outFile << i->first << "=[" << i->second << "]" << std::endl;
}
outFile << "*** GLOBAL VARIABLES ***" << std::endl;
for (auto i = global.variables.begin(); i != global.variables.end(); i++)
outFile << i->first << "=[" << i->second << "]" << std::endl;
outFile << "*** LOCAL VARIABLES ***" << std::endl;
for (auto i = local->variables.begin(); i != local->variables.end(); i++)
outFile << i->first << "=[" << i->second << "]" << std::endl;
outFile << "*** KEYWORD VALUES ***" << std::endl;
for (auto i = parent->keywords.begin(); i != parent->keywords.end(); i++)
outFile << i->first << "=[" << i->second << "]" << std::endl;
outFile << "*** COOKIES ***" << std::endl;
for (auto i = global.cookies.data.begin(); i != global.cookies.data.end(); i++)
outFile << i->first << "=[" << i->second << "]" << std::endl;
// Unlike variables (which have real global/local/parent scoping),
// custom <tag name="..."> definitions have only one level - __tag.cpp
// always registers into global.tags regardless of where in the
// script the definition sits, so there's nothing to break out by
// scope here.
outFile << "*** DEFINED TAGS ***" << std::endl;
for (auto i = global.tags.begin(); i != global.tags.end(); i++)
outFile << i->first << std::endl;
outFile.close();
}
}