aboutsummaryrefslogtreecommitdiff
path: root/src/support
diff options
context:
space:
mode:
Diffstat (limited to 'src/support')
-rw-r--r--src/support/stylesheet_parameter_guard.cc36
-rw-r--r--src/support/stylesheet_parameter_guard.h35
2 files changed, 71 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()
+ );
+}
+
+}
diff --git a/src/support/stylesheet_parameter_guard.h b/src/support/stylesheet_parameter_guard.h
new file mode 100644
index 0000000..f0622ad
--- /dev/null
+++ b/src/support/stylesheet_parameter_guard.h
@@ -0,0 +1,35 @@
+#ifndef INPUTXSLT_SRC_SUPPORT_STYLESHEET_PARAMETER_GUARD_H_
+#define INPUTXSLT_SRC_SUPPORT_STYLESHEET_PARAMETER_GUARD_H_
+
+#include <xalanc/XalanTransformer/XalanTransformer.hpp>
+
+#include <string>
+#include <unordered_map>
+
+#include "common.h"
+
+namespace InputXSLT {
+
+class StylesheetParameterGuard {
+ public:
+ typedef std::unordered_map<std::string, std::string> map;
+
+ explicit StylesheetParameterGuard(xalan::XalanTransformer&);
+ StylesheetParameterGuard(
+ xalan::XalanTransformer&,
+ const map&
+ );
+
+ ~StylesheetParameterGuard();
+
+ void set(const map&);
+ void set(const std::string&, const std::string&);
+
+ private:
+ xalan::XalanTransformer& transformer_;
+
+};
+
+}
+
+#endif // INPUTXSLT_SRC_SUPPORT_STYLESHEET_PARAMETER_GUARD_H_