aboutsummaryrefslogtreecommitdiff
path: root/src/support/stylesheet_parameter_guard.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/support/stylesheet_parameter_guard.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/support/stylesheet_parameter_guard.cc')
-rw-r--r--src/support/stylesheet_parameter_guard.cc36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/support/stylesheet_parameter_guard.cc b/src/support/stylesheet_parameter_guard.cc
new file mode 100644
index 0000000..f82c2d5
--- /dev/null
+++ b/src/support/stylesheet_parameter_guard.cc
@@ -0,0 +1,36 @@
+#include "stylesheet_parameter_guard.h"
+
+namespace InputXSLT {
+
+StylesheetParameterGuard::StylesheetParameterGuard(
+ xalan::XalanTransformer& transformer
+): transformer_(transformer) { }
+
+StylesheetParameterGuard::StylesheetParameterGuard(
+ xalan::XalanTransformer& transformer,
+ const map& parameters
+): transformer_(transformer) {
+ this->set(parameters);
+}
+
+StylesheetParameterGuard::~StylesheetParameterGuard() {
+ this->transformer_.clearStylesheetParams();
+}
+
+void StylesheetParameterGuard::set(const map& parameters) {
+ for ( auto&& parameter : parameters ) {
+ this->set(parameter.first, parameter.second);
+ }
+}
+
+void StylesheetParameterGuard::set(
+ const std::string& key,
+ const std::string& value
+) {
+ this->transformer_.setStylesheetParam(
+ key.data(),
+ std::string("'" + value + "'").data()
+ );
+}
+
+}