summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--server/src/macroparser.cc38
-rw-r--r--server/src/macroparser.h6
-rw-r--r--server/src/server.cc44
-rw-r--r--server/src/template.h4
-rw-r--r--server/src/templateparser.cc13
-rw-r--r--server/src/templateparser.h2
6 files changed, 42 insertions, 65 deletions
diff --git a/server/src/macroparser.cc b/server/src/macroparser.cc
index 9175c07..356de1f 100644
--- a/server/src/macroparser.cc
+++ b/server/src/macroparser.cc
@@ -68,7 +68,7 @@ MacroParser::MacroParser(std::string macro)
state = UNDEFINED;
m = NULL;
current_map = NULL;
- current_luaprogram = NULL;
+ current_script = NULL;
file = XML"/macros/" + macro + ".xml";
@@ -91,9 +91,9 @@ void MacroParser::characterData(std::string &data)
current_map->attributes["lua"].append(data);
}
- if(state == LUAPROGRAM) {
- assert(current_luaprogram); // No lua program present!
- current_luaprogram->attributes["lua"].append(data);
+ if(state == SCRIPT) {
+ assert(current_script); // No script present!
+ current_script->attributes["code"].append(data);
}
}
@@ -161,10 +161,10 @@ void MacroParser::startTag(std::string name, std::map< std::string, std::string>
return;
}
- // Enable LUA Program parsing
- if(name == "luaprograms") {
- if(state != MACRO) error("luaprograms found outside macro.");
- state = LUAPROGRAMS;
+ // Enable script parsing
+ if(name == "scripts") {
+ if(state != MACRO) error("scripts found outside macro.");
+ state = SCRIPTS;
assert(m); // No macro is currently available, cannot create maps!
@@ -172,16 +172,16 @@ void MacroParser::startTag(std::string name, std::map< std::string, std::string>
}
// Create Query
- if(name == "luaprogram") {
- if(state != LUAPROGRAMS) error("lua program found outside maps.");
- state = LUAPROGRAM;
+ if(name == "script") {
+ if(state != SCRIPTS) error("script found outside scripts.");
+ state = SCRIPT;
assert(m); // No macro is currently available, cannot create map!
- LUAProgram l;
- l.attributes = attributes;
- m->luaprograms.push_back(l);
- current_luaprogram = &(m->luaprograms.back());
+ Script s;
+ s.attributes = attributes;
+ m->scripts.push_back(s);
+ current_script = &(m->scripts.back());
return;
}
@@ -243,10 +243,10 @@ void MacroParser::endTag(std::string name)
current_map = NULL;
state = MAPS;
}
- if(name == "luaprograms") state = MACRO;
- if(name == "luaprogram") {
- current_luaprogram = NULL;
- state = LUAPROGRAMS;
+ if(name == "scripts") state = MACRO;
+ if(name == "script") {
+ current_script = NULL;
+ state = SCRIPTS;
}
if(name == "window") state = MACRO;
diff --git a/server/src/macroparser.h b/server/src/macroparser.h
index 0b755f0..cbd36ba 100644
--- a/server/src/macroparser.h
+++ b/server/src/macroparser.h
@@ -39,8 +39,8 @@ class MacroParser : public SAXParser {
MAPS,
MAP,
WINDOW,
- LUAPROGRAMS,
- LUAPROGRAM
+ SCRIPTS,
+ SCRIPT
} ParserState;
public:
@@ -66,7 +66,7 @@ private:
ParserState state;
Macro *m;
Map *current_map;
- LUAProgram *current_luaprogram;
+ Script *current_script;
std::vector< Widget* > widgetstack;
// Error callback function.
diff --git a/server/src/server.cc b/server/src/server.cc
index 1bd0ccf..65fd782 100644
--- a/server/src/server.cc
+++ b/server/src/server.cc
@@ -83,28 +83,18 @@ static void connection(TCPSocket &socket)
while(i != transaction.commits.end()) {
Commit &commit = *i;
- /*
- Macro macro;
- MacroParser parser(commit.macro, macro);
- parser.parse();
- */
-
- Macro macro;
- macro.attributes["name"] = commit.macro;
- macro.attributes["version"] = "1.0";//commit.version;
-
- db.commit(transaction.user, transaction.cpr, macro, commit.fields);
+ MacroParser mp(commit.macro);
+ mp.parse();
+ Macro *macro = mp.getMacro();
+
+ db.commit(transaction.user, transaction.cpr, *macro, commit.fields);
- /*
- std::string resume = resume_parser(macro.format.c_str(), commit);
+ std::string resume = resume_parser(macro->attributes["resume"].c_str(), commit);
- std::string journal_commit_addr = config()->lookup("journal_commit_addr");
- int journal_commit_port = config()->lookup("journal_commit_port");
-
- journal_commit(transaction.cpr.c_str(), transaction.user.c_str(),
- journal_commit_addr.c_str(), journal_commit_port,
- resume.c_str(), resume.length());
- */
+ journal_commit(transaction.cpr.c_str(), transaction.user.c_str(),
+ Conf::journal_commit_addr.c_str(), Conf::journal_commit_port,
+ resume.c_str(), resume.length());
+
i++;
}
}
@@ -175,20 +165,22 @@ static void connection(TCPSocket &socket)
answer += " <macro name=\"" + macro.attributes["name"] + "\" completed=";
if(db.checkMacro(transaction.cpr, macro.attributes["name"])) answer += "\"true\"";
else answer += "\"false\"";
+ // answer += " resume=\"" + macro.attributes["resume"] + "\"";
answer += ">\n";
if(macro.attributes["name"] == request.macro) {
// Handle lua programs
- if(m->luaprograms.size()) {
+ if(m->scripts.size()) {
answer += " <scripts>\n";
- std::vector< LUAProgram >::iterator lpi = m->luaprograms.begin();
- while(lpi != m->luaprograms.end()) {
- answer += " <script language=\"lua\" name=\"" + lpi->attributes["name"] + "\">\n";
- answer += xml_encode(lpi->attributes["lua"]);
+ std::vector< Script >::iterator spi = m->scripts.begin();
+ while(spi != m->scripts.end()) {
+ answer += " <script language=\"" + spi->attributes["language"]
+ + "\" name=\"" + spi->attributes["name"] + "\">\n";
+ answer += xml_encode(spi->attributes["code"]);
answer += "\n </script>\n";
- lpi++;
+ spi++;
}
answer += " </scripts>\n";
}
diff --git a/server/src/template.h b/server/src/template.h
index f19746a..d047712 100644
--- a/server/src/template.h
+++ b/server/src/template.h
@@ -36,7 +36,7 @@ public:
std::map< std::string, std::string > attributes;
};
-class LUAProgram {
+class Script {
public:
std::map< std::string, std::string > attributes;
};
@@ -55,7 +55,7 @@ class Macro {
public:
std::vector< Query > queries;
std::vector< Map > maps;
- std::vector< LUAProgram > luaprograms;
+ std::vector< Script > scripts;
Widget window;
std::map< std::string, std::string > attributes;
};
diff --git a/server/src/templateparser.cc b/server/src/templateparser.cc
index 1fecc20..8874b74 100644
--- a/server/src/templateparser.cc
+++ b/server/src/templateparser.cc
@@ -68,8 +68,6 @@ TemplateParser::TemplateParser(std::string course)
state = UNDEFINED;
t = new Template();
current_macro = NULL;
- current_map = NULL;
- current_luaprogram = NULL;
file = XML"/templates/" + course + ".xml";
@@ -87,17 +85,6 @@ TemplateParser::~TemplateParser()
void TemplateParser::characterData(std::string &data)
{
- /*
- if(state == MAP) {
- assert(current_map); // No map present!
- current_map->attributes["lua"].append(data);
- }
-
- if(state == LUAPROGRAM) {
- assert(current_luaprogram); // No lua program present!
- current_luaprogram->attributes["lua"].append(data);
- }
- */
}
void TemplateParser::startTag(std::string name, std::map< std::string, std::string> attributes)
diff --git a/server/src/templateparser.h b/server/src/templateparser.h
index 596bf27..f69009a 100644
--- a/server/src/templateparser.h
+++ b/server/src/templateparser.h
@@ -67,8 +67,6 @@ private:
ParserState state;
Template *t;
Macro *current_macro;
- Map *current_map;
- LUAProgram *current_luaprogram;
std::vector< Widget* > widgetstack;
// Error callback function.