summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/module.cc25
-rw-r--r--src/module.h3
2 files changed, 24 insertions, 4 deletions
diff --git a/src/module.cc b/src/module.cc
index 425403b..cc0f99c 100644
--- a/src/module.cc
+++ b/src/module.cc
@@ -102,16 +102,35 @@ std::string ModuleInstantiation::dump(const std::string &indent) const
if (scope.numElements() == 0) {
dump << ");\n";
} else if (scope.numElements() == 1) {
- dump << ")\n";
- dump << scope.dump(indent + "\t");
+ dump << ") ";
+ dump << scope.dump("");
} else {
dump << ") {\n";
- scope.dump(indent + "\t");
+ dump << scope.dump(indent + "\t");
dump << indent << "}\n";
}
return dump.str();
}
+std::string IfElseModuleInstantiation::dump(const std::string &indent) const
+{
+ std::stringstream dump;
+ dump << ModuleInstantiation::dump(indent);
+ dump << indent;
+ if (else_scope.numElements() > 0) {
+ dump << indent << "else ";
+ if (else_scope.numElements() == 1) {
+ dump << else_scope.dump("");
+ }
+ else {
+ dump << "{\n";
+ dump << else_scope.dump(indent + "\t");
+ dump << indent << "}\n";
+ }
+ }
+ return dump.str();
+}
+
AbstractNode *ModuleInstantiation::evaluate(const Context *ctx) const
{
EvalContext c(ctx, this->arguments, &this->scope);
diff --git a/src/module.h b/src/module.h
index 5dfb8c4..96e5649 100644
--- a/src/module.h
+++ b/src/module.h
@@ -19,7 +19,7 @@ public:
: tag_root(false), tag_highlight(false), tag_background(false), recursioncount(0), modname(name) { }
virtual ~ModuleInstantiation();
- std::string dump(const std::string &indent) const;
+ virtual std::string dump(const std::string &indent) const;
class AbstractNode *evaluate(const class Context *ctx) const;
std::vector<AbstractNode*> instantiateChildren(const Context *evalctx) const;
@@ -51,6 +51,7 @@ public:
IfElseModuleInstantiation() : ModuleInstantiation("if") { }
virtual ~IfElseModuleInstantiation();
std::vector<AbstractNode*> instantiateElseChildren(const Context *evalctx) const;
+ virtual std::string dump(const std::string &indent) const;
LocalScope else_scope;
};
contact: Jan Huwald // Impressum