aboutsummaryrefslogtreecommitdiff
path: root/src/transformation_facade.cc
diff options
context:
space:
mode:
authorAdrian Kummerländer2014-05-10 15:51:34 +0200
committerAdrian Kummerländer2014-05-10 15:51:34 +0200
commiteb854e72efa780fd6ceb6e7457b6ac6429a54dad (patch)
treebb391243144037e7f5af139477813c8629124446 /src/transformation_facade.cc
parent47b3bb0882a838ba794f105f3dc93ec45f5e1727 (diff)
downloadInputXSLT-eb854e72efa780fd6ceb6e7457b6ac6429a54dad.tar
InputXSLT-eb854e72efa780fd6ceb6e7457b6ac6429a54dad.tar.gz
InputXSLT-eb854e72efa780fd6ceb6e7457b6ac6429a54dad.tar.bz2
InputXSLT-eb854e72efa780fd6ceb6e7457b6ac6429a54dad.tar.lz
InputXSLT-eb854e72efa780fd6ceb6e7457b6ac6429a54dad.tar.xz
InputXSLT-eb854e72efa780fd6ceb6e7457b6ac6429a54dad.tar.zst
InputXSLT-eb854e72efa780fd6ceb6e7457b6ac6429a54dad.zip
Implemented StylesheetParameterGuard class
* removes responsibility for clearing parameters from the generate member methods * abstracts parameter escaping and setting and handles map conversion * marked actual generate member method as private and added StylesheetParameterGuard reference argument ** "frontend" generate member methods instantiate a StylesheetParameterGuard instance and pass it to the actual generate method ** this enables central default parameter definition while offering the possibility for custom parameters
Diffstat (limited to 'src/transformation_facade.cc')
-rw-r--r--src/transformation_facade.cc48
1 files changed, 24 insertions, 24 deletions
diff --git a/src/transformation_facade.cc b/src/transformation_facade.cc
index b411b38..698cdb1 100644
--- a/src/transformation_facade.cc
+++ b/src/transformation_facade.cc
@@ -26,14 +26,34 @@ TransformationFacade::~TransformationFacade() {
}
int TransformationFacade::generate(const std::string& target) {
+ StylesheetParameterGuard guard(this->transformer_);
+
+ return this->generate(target, guard);
+}
+
+int TransformationFacade::generate(
+ const std::string& target,
+ const StylesheetParameterGuard::map& parameters
+) {
+ StylesheetParameterGuard guard(this->transformer_, parameters);
+
+ return this->generate(target, guard);
+}
+
+int TransformationFacade::generate(
+ const std::string& target,
+ StylesheetParameterGuard& parameters
+) {
const boost::filesystem::path targetFilePath(
boost::filesystem::absolute(target)
);
- this->setParameters({
- { "target-file", targetFilePath.filename().string() },
- { "parent-directory", targetFilePath.parent_path().filename().string() }
- });
+ parameters.set(
+ "target-file", targetFilePath.filename().string()
+ );
+ parameters.set(
+ "parent-directory", targetFilePath.parent_path().filename().string()
+ );
std::stringstream emptyStream("<dummy/>");
xalan::XSLTInputSource inputSource(emptyStream);
@@ -49,27 +69,7 @@ int TransformationFacade::generate(const std::string& target) {
std::cerr << this->transformer_.getLastError() << std::endl;
}
- this->transformer_.clearStylesheetParams();
-
return resultCode;
}
-int TransformationFacade::generate(
- const std::string& target,
- const parameter_map& parameters
-) {
- this->setParameters(parameters);
-
- return this->generate(target);
-}
-
-void TransformationFacade::setParameters(const parameter_map& parameters) {
- for ( auto&& parameter : parameters ) {
- this->transformer_.setStylesheetParam(
- parameter.first.data(),
- std::string("'" + parameter.second + "'").data()
- );
- }
-}
-
}