diff options
| -rw-r--r-- | src/module.cc | 25 | ||||
| -rw-r--r-- | src/module.h | 3 | 
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;  }; | 
