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 ] |