Newer
Older
/*
* Dot.cpp
*
* Created on: 16. 8. 2017
* Author: Jan Travnicek
*/
#include "Dot.h"
#include <registration/AlgoRegistration.hpp>
#include <cstdlib>
#include <exception/CommonException.h>
std::vector < std::string> Dot::m_DotAllowedTypes { "dot", "xdot", "ps", "pdf", "svg", "svgz", "fig", "png", "gif", "jpg", "jpeg", "json", "imap", "cmapx" };
int res = std::system( ( "dot -Tx11 <<DOTDATA\n" + data + "\nDOTDATA" ).c_str ( ) );
if ( res )
throw exception::CommonException ( "The dot command exited unsuccessfuly. Return value was " + ext::to_string ( res ) + "." );
}
void Dot::dot ( const std::string & data, const std::string & outputType, const std::string & outputFile ) {
std::string outputTypeLower;
std::transform ( outputType.begin( ), outputType.end(), std::back_inserter ( outputTypeLower ), ::tolower);
if ( std::find ( m_DotAllowedTypes.begin( ), m_DotAllowedTypes.end ( ), outputType ) == m_DotAllowedTypes.end ( ) )
throw exception::CommonException ( "Dot outputType is invalid." );
int res = std::system ( ( "dot -T" + outputTypeLower + " -o " + outputFile + "<<DOTDATA\n" + data + "\nDOTDATA" ).c_str ( ) );
if ( res )
throw exception::CommonException ( "The dot command exited unsuccessfuly. Return value was " + ext::to_string ( res ) + "." );
auto DotTx11 = registration::AbstractRegister < Dot, void, const std::string & > ( Dot::dot, abstraction::AlgorithmCategories::AlgorithmCategory::DEFAULT, "dot_data" );
auto DotFile = registration::AbstractRegister < Dot, void, const std::string &, const std::string &, const std::string & > ( Dot::dot, abstraction::AlgorithmCategories::AlgorithmCategory::DEFAULT, "dot_data", "output_type", "file_name" );
} /* namespace builtin */
} /* namespace cli */