#include "__dump.h"
#include "Exception.h"
#include <iostream>
#include <fstream>

namespace jet {

   __dump::__dump(coreutils::ZString &in, coreutils::MString &parentOut, Global &global, Tag *parent, Tag *local) : Tag(in, parentOut, global, parent, local) {
      if(!keywordDefined("file"))
	throw coreutils::Exception("file must be sppecified for dump tag.");

      std::ofstream outFile(keywords["file"].str());

      if(global.cgi) {
	 outFile << "*** CGI VARIABLES ***" << std::endl;
//	 for (auto i = global.cgiVariables.begin(); i != global.cgiVariables.end(); i++)
//	   outFile << i->first << "=[" << i->second << "]" << std::endl;
      }
      
      outFile << "*** GLOBAL VARIABLES ***" << std::endl;      
      for (auto i = global.variables.begin(); i != global.variables.end(); i++)
	outFile << i->first << "=[" << i->second << "]" << std::endl;

      outFile << "*** LOCAL VARIABLES ***" << std::endl;      
      for (auto i = local->variables.begin(); i != local->variables.end(); i++)
	outFile << i->first << "=[" << i->second << "]" << std::endl;

      outFile << "*** KEYWORD VALUES ***" << std::endl;      
      for (auto i = parent->keywords.begin(); i != parent->keywords.end(); i++)
	outFile << i->first << "=[" << i->second << "]" << std::endl;

      outFile << "*** COOKIES ***" << std::endl;      
      for (auto i = global.cookies.data.begin(); i != global.cookies.data.end(); i++)
	outFile << i->first << "=[" << i->second << "]" << std::endl;

      outFile.close();
      
   }
   
}
