summaryrefslogtreecommitdiff
path: root/server/src/macroparser.cc
diff options
context:
space:
mode:
authordeva <deva>2008-10-10 10:21:20 +0000
committerdeva <deva>2008-10-10 10:21:20 +0000
commita703bf6f8dd6cd5a75202266f769e3ef2e42bcb2 (patch)
tree120486db55ca92bc9f2c5dd43412c7d7add5487b /server/src/macroparser.cc
parent9b697d2d3e34962385cd85a14d4cb14d5b1763ce (diff)
Made resume a standalone tag istead of an attribute of the macro tag.
Diffstat (limited to 'server/src/macroparser.cc')
-rw-r--r--server/src/macroparser.cc18
1 files changed, 18 insertions, 0 deletions
diff --git a/server/src/macroparser.cc b/server/src/macroparser.cc
index 356de1f..582c90c 100644
--- a/server/src/macroparser.cc
+++ b/server/src/macroparser.cc
@@ -86,6 +86,11 @@ MacroParser::~MacroParser()
void MacroParser::characterData(std::string &data)
{
+ if(state == RESUME) {
+ assert(m); // No macro present!
+ m->resume.attributes["format"].append(data);
+ }
+
if(state == MAP) {
assert(current_map); // No map present!
current_map->attributes["lua"].append(data);
@@ -112,6 +117,18 @@ void MacroParser::startTag(std::string name, std::map< std::string, std::string>
return;
}
+ // Enable resume parsing
+ if(name == "resume") {
+ if(state != MACRO) error("resume found outside macro.");
+ state = RESUME;
+
+ m->resume.attributes = attributes;
+
+ assert(m); // No macro is currently available, cannot create queries!
+
+ return;
+ }
+
// Enable Query parsing
if(name == "queries") {
if(state != MACRO) error("queries found outside macro.");
@@ -236,6 +253,7 @@ void MacroParser::endTag(std::string name)
if(name == "macro") {
state = UNDEFINED;
}
+ if(name == "resume") state = MACRO;
if(name == "queries") state = MACRO;
if(name == "query") state = QUERIES;
if(name == "maps") state = MACRO;