19 class Tag :
public coreutils::ZString {
22 Tag(coreutils::ZString &in, coreutils::MString &parentOut,
Global &global,
Tag *parent = NULL,
Tag *local = NULL, coreutils::ZString splitTagName =
"");
25 coreutils::MString getVariable(coreutils::ZString &variable,
bool inContainer =
false);
28 std::map<coreutils::MString, coreutils::MString> variables;
29 std::map<coreutils::MString, coreutils::MString> keywords;
30 coreutils::ZString name;
31 coreutils::ZString container;
32 coreutils::ZString container2;
38 bool hasContainer =
false;
39 bool hasContainer2 =
false;
40 bool keywordDefined(coreutils::ZString variable);
41 void parseContainer(coreutils::ZString &in, coreutils::MString &out, coreutils::ZString container2 = NULL,
bool topLevel =
false);
42 void processContainer(coreutils::ZString &container, coreutils::ZString container2 = NULL,
bool topLevel =
false);
43 void copyContainer(coreutils::ZString &in, coreutils::MString &out);
45 coreutils::MString &parentOut;
46 coreutils::MString out;
50 bool filterBlankLines =
false;
51 bool trimLines =
false;
52 bool cleanWhitespace =
false;
54 void renderVariableName(coreutils::ZString &variable, coreutils::MString &name, coreutils::MString &modifier);
55 void storeVariable(coreutils::ZString variable, coreutils::MString value, coreutils::ZString scope);
56 void storeVariable(coreutils::ZString variable);
59 bool containerOnly =
false;
60 coreutils::ZString splitTagName;
62 int skipBlankLine(coreutils::ZString in);
64 void scanContainer(coreutils::ZString &in);
65 bool ifNested(coreutils::ZString &in);
66 bool ifTagName(coreutils::ZString &in,
const char *tag);
67 bool ifTagName(coreutils::ZString &in);
68 bool ifTagDefined(coreutils::ZString &in, coreutils::ZString &tag);
69 bool ifEndTagName(coreutils::ZString &in);
70 bool ifSplitTagName(coreutils::ZString &in);
72 coreutils::MString processModifier(coreutils::MString &value, coreutils::MString &modifier);