From d19a195985b96701b2ab302538fe24e87e76decf Mon Sep 17 00:00:00 2001 From: Adrian Kummerländer Date: Sun, 18 May 2014 20:07:45 +0200 Subject: Added possibility for streaming TransformationFacade output * added "std::basic_ostream" taking "generate" member method overloads * marked cli parameter "target" as optional ** output is streamed to std::cout if target file is not provided --- src/transformation_facade.cc | 54 ++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 30 deletions(-) (limited to 'src/transformation_facade.cc') diff --git a/src/transformation_facade.cc b/src/transformation_facade.cc index 41ee458..07483c1 100644 --- a/src/transformation_facade.cc +++ b/src/transformation_facade.cc @@ -25,49 +25,43 @@ 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 + const std::string& targetPath, + StylesheetParameterGuard& parameters ) { - StylesheetParameterGuard guard(this->transformer_, parameters); - - return this->generate(target, guard); -} + const boost::filesystem::path targetPathHelper( + boost::filesystem::absolute(targetPath) + ); -int TransformationFacade::generate( - const std::string& target, - const xalan::XObjectPtr& parameter -) { - StylesheetParameterGuard guard(this->transformer_); - guard.set("parameters", parameter); + parameters.set( + "target-file", targetPathHelper.filename().string() + ); + parameters.set( + "parent-directory", targetPathHelper.parent_path().filename().string() + ); - return this->generate(target, guard); + return this->generate( + xalan::XSLTResultTarget(targetPath.data()), + parameters + ); } int TransformationFacade::generate( - const std::string& target, + std::basic_ostream& targetStream, StylesheetParameterGuard& parameters ) { - const boost::filesystem::path targetFilePath( - boost::filesystem::absolute(target) - ); - - parameters.set( - "target-file", targetFilePath.filename().string() - ); - parameters.set( - "parent-directory", targetFilePath.parent_path().filename().string() + return this->generate( + xalan::XSLTResultTarget(targetStream), + parameters ); +} +int TransformationFacade::generate( + xalan::XSLTResultTarget&& outputTarget, + StylesheetParameterGuard& +) { std::stringstream emptyStream(""); xalan::XSLTInputSource inputSource(emptyStream); - xalan::XSLTResultTarget outputTarget(target.data()); const int resultCode = this->transformer_.transform( inputSource, -- cgit v1.2.3