aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt8
-rw-r--r--ixslt.cc103
-rw-r--r--test.cc75
-rwxr-xr-xtest/check.sh2
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 ]