From 11355181c0b5f8377774daefcc17bb5e6bc20f61 Mon Sep 17 00:00:00 2001 From: Adrian Kummerländer Date: Wed, 4 Jun 2014 21:22:18 +0200 Subject: Renamed "test" executable to "ixslt" * improved "ixslt" frontend code structure ** extracted input, process and output logic into separate methods ** removed manual "--transformation" parameter check as it is defined as required --- CMakeLists.txt | 8 ++--- ixslt.cc | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ test.cc | 75 ----------------------------------------- test/check.sh | 2 +- 4 files changed, 108 insertions(+), 80 deletions(-) create mode 100644 ixslt.cc delete mode 100644 test.cc 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 +#include +#include + +boost::optional input( + int argc, + char** argv +) { + boost::program_options::options_description optionDescription( + "Supported options" + ); + + optionDescription.add_options() + ( + "transformation", + boost::program_options::value()->required(), + "transformation file" + ) + ( + "target", + boost::program_options::value(), + "target file" + ) + ( + "include", + boost::program_options::value>(), + "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(); + } + + return boost::make_optional(variables); +} + +bool process(const boost::program_options::variables_map& variables) { + std::vector includePath; + + if ( variables.count("include") ) { + includePath = variables["include"].as>(); + }; + + InputXSLT::PlattformGuard plattform(includePath); + + try { + InputXSLT::TransformationFacade transformation( + variables["transformation"].as(), + plattform.getEntityResolver() + ); + + if ( variables.count("target") ) { + transformation.generate( + variables["target"].as() + ); + } 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 -#include -#include - -int main(int ac, char** av) { - boost::program_options::options_description optionDescription( - "Supported options" - ); - - optionDescription.add_options() - ("transformation", boost::program_options::value()->required(), "transformation file") - ("target", boost::program_options::value(), "target file") - ("include", boost::program_options::value>(), "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 includePath; - - if ( variables.count("include") ) { - includePath = variables["include"].as>(); - }; - - InputXSLT::PlattformGuard plattform(includePath); - - try { - InputXSLT::TransformationFacade transformation( - variables["transformation"].as(), - plattform.getEntityResolver() - ); - - if ( variables.count("target") ) { - transformation.generate( - variables["target"].as() - ); - } 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 ] -- cgit v1.2.3