diff options
| -rw-r--r-- | CMakeLists.txt | 8 | ||||
| -rw-r--r-- | ixslt.cc | 103 | ||||
| -rw-r--r-- | test.cc | 75 | ||||
| -rwxr-xr-x | test/check.sh | 2 | 
4 files changed, 108 insertions, 80 deletions
| diff --git a/CMakeLists.txt b/CMakeLists.txt index 2ca7990..b9e2771 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,8 +41,8 @@ set(  )  add_executable( -	test -	test.cc +	ixslt +	ixslt.cc  )  add_library( @@ -52,7 +52,7 @@ add_library(  )  target_link_libraries( -	test +	ixslt  	${Libraries}  ) @@ -64,5 +64,5 @@ add_custom_target(  	COMMAND  	sh check.sh  	DEPENDS -	test +	ixslt  ) diff --git a/ixslt.cc b/ixslt.cc new file mode 100644 index 0000000..76c35d3 --- /dev/null +++ b/ixslt.cc @@ -0,0 +1,103 @@ +#include "plattform_guard.h" +#include "transformation_facade.h" + +#include "boost/optional.hpp" +#include "boost/program_options.hpp" + +#include <string> +#include <vector> +#include <iostream> + +boost::optional<boost::program_options::variables_map> input( +	int argc, +	char** argv +) { +	boost::program_options::options_description optionDescription( +		"Supported options" +	); + +	optionDescription.add_options() +		( +			"transformation", +			boost::program_options::value<std::string>()->required(), +			"transformation file" +		) +		( +			"target", +			boost::program_options::value<std::string>(), +			"target file" +		) +		( +			"include", +			boost::program_options::value<std::vector<std::string>>(), +			"include paths" +		) +	; + +	boost::program_options::variables_map variables; + +	try { +		boost::program_options::store( +			boost::program_options::parse_command_line( +				argc, argv, optionDescription +			), +			variables +		); + +		boost::program_options::notify(variables); +	} +	catch ( const std::exception& exception ) { +		std::cerr << exception.what()  << std::endl; +		std::cout << optionDescription << std::endl; + +		return boost::optional<boost::program_options::variables_map>(); +	} + +	return boost::make_optional(variables); +} + +bool process(const boost::program_options::variables_map& variables) { +	std::vector<std::string> includePath; + +	if ( variables.count("include") ) { +		includePath = variables["include"].as<std::vector<std::string>>(); +	}; + +	InputXSLT::PlattformGuard plattform(includePath); + +	try { +		InputXSLT::TransformationFacade transformation( +			variables["transformation"].as<std::string>(), +			plattform.getEntityResolver() +		); + +		if ( variables.count("target") ) { +			transformation.generate( +				variables["target"].as<std::string>() +			); +		} else { +			transformation.generate(std::cout); +		} + +		return true; +	} +	catch (const InputXSLT::ErrorCapacitor::exception& exception) { +		for ( auto&& error : *(exception.getCachedErrors()) ) { +			std::cerr << error << std::endl; +		} + +		return false; +	} +} + +int main(int argc, char** argv) { +	if ( auto variables = input(argc, argv) ) { +		if ( process(*variables) ) { +			return 0; +		} else { +			return 1; +		} +	} else { +		return 1; +	} +} diff --git a/test.cc b/test.cc deleted file mode 100644 index 6874fd5..0000000 --- a/test.cc +++ /dev/null @@ -1,75 +0,0 @@ -#include "plattform_guard.h" -#include "transformation_facade.h" - -#include "boost/program_options.hpp" - -#include <string> -#include <vector> -#include <iostream> - -int main(int ac, char** av) { -	boost::program_options::options_description optionDescription( -		"Supported options" -	); - -	optionDescription.add_options() -		("transformation", boost::program_options::value<std::string>()->required(),  "transformation file") -		("target",         boost::program_options::value<std::string>(),              "target file") -		("include",        boost::program_options::value<std::vector<std::string>>(), "include paths") -	; - -	boost::program_options::variables_map variables; - -	boost::program_options::store( -		boost::program_options::parse_command_line( -			ac, av, optionDescription -		), -		variables -	); - -	try { -		boost::program_options::notify(variables); -	} -	catch ( std::exception& exception ) { -		std::cerr << exception.what() << std::endl; -	} - -	if ( variables.count("transformation") ) { -		std::vector<std::string> includePath; - -		if ( variables.count("include") ) { -			includePath = variables["include"].as<std::vector<std::string>>(); -		}; - -		InputXSLT::PlattformGuard plattform(includePath); - -		try { -			InputXSLT::TransformationFacade transformation( -				variables["transformation"].as<std::string>(), -				plattform.getEntityResolver() -			); - -			if ( variables.count("target") ) { -				transformation.generate( -					variables["target"].as<std::string>() -				); -			} else { -				transformation.generate(std::cout); -			} - -			return 0; -		}  -		catch (const InputXSLT::ErrorCapacitor::exception& exception) { -			for ( auto&& error : *(exception.getCachedErrors()) ) { -				std::cerr << error << std::endl; -			} - -			return 1; -		} -	} else { -		std::cout << optionDescription << std::endl; - -		return 1; -	} - -} diff --git a/test/check.sh b/test/check.sh index 84687bf..e205eeb 100755 --- a/test/check.sh +++ b/test/check.sh @@ -9,7 +9,7 @@ do  		cd $testcase  		rm -f actual.xml  -		./../../build/test --transformation transformation.xsl --target actual.xml --include ../common/ +		./../../build/ixslt --transformation transformation.xsl --target actual.xml --include ../common/  		diff -u reference.xml actual.xml  		if [ $? = 0 ] | 
