diff --git a/Modules/Core/Common/include/otbStringToHTML.h b/Modules/Core/Common/include/otbStringToHTML.h new file mode 100644 index 0000000000000000000000000000000000000000..3eab95fd21c4210ab3f6317deb8eaa45bf97f100 --- /dev/null +++ b/Modules/Core/Common/include/otbStringToHTML.h @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2005-2017 Centre National d'Etudes Spatiales (CNES) + * + * This file is part of Orfeo Toolbox + * + * https://www.orfeo-toolbox.org/ + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef otbStringToHTML_h +#define otbStringToHTML_h + +#include <string> +#include <iostream> + +#include "OTBCommonExport.h" + +namespace otb +{ + +/** + * \class StringToHTML + * + * Prepare a plain string for HTML encapsulation (protection of special + * characters) + */ +class OTBCommon_EXPORT StringToHTML +{ +public: + StringToHTML(const std::string & str); + + void Print(std::ostream& os) const; + +protected: + +private: + const std::string & m_Str; +}; + +extern OTBCommon_EXPORT std::ostream & operator<< (std::ostream& os, const otb::StringToHTML& str); + +} // end of namespace otb + +#endif diff --git a/Modules/Core/Common/src/CMakeLists.txt b/Modules/Core/Common/src/CMakeLists.txt index fdfd2e9f5cae6c4362a05d721c923074d966a2ab..02ff6250e794704244acbe370fc7c562a13524c3 100644 --- a/Modules/Core/Common/src/CMakeLists.txt +++ b/Modules/Core/Common/src/CMakeLists.txt @@ -28,6 +28,7 @@ set(OTBCommon_SRC otbStandardOneLineFilterWatcher.cxx otbWriterWatcherBase.cxx otbStopwatch.cxx + otbStringToHTML.cxx ) add_library(OTBCommon ${OTBCommon_SRC}) diff --git a/Modules/Core/Common/src/otbStringToHTML.cxx b/Modules/Core/Common/src/otbStringToHTML.cxx new file mode 100644 index 0000000000000000000000000000000000000000..064ec850c2b4f4767064c9e6f2ae01f7a1927771 --- /dev/null +++ b/Modules/Core/Common/src/otbStringToHTML.cxx @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2005-2017 Centre National d'Etudes Spatiales (CNES) + * + * This file is part of Orfeo Toolbox + * + * https://www.orfeo-toolbox.org/ + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "otbStringToHTML.h" + +namespace otb +{ + +StringToHTML::StringToHTML(const std::string & str) + : m_Str(str) +{ +} + +void +StringToHTML::Print(std::ostream& os) const +{ + // TODO : add a Tex to HTML translator (maybe try TtH) + bool formulaMode=false; + for(auto&& c : m_Str) + { + if (c=='`') + { + formulaMode = !formulaMode; + } + switch (c) + { + case '<': + os.write("<",4); + break; + case '>': + os.write(">",4); + break; + case '&': + os.write("&",5); + break; + case '\n': + os.write("<br/>",5); + break; + default: + os.put(c); + } + } +} + +std::ostream & operator<< (std::ostream& os, const StringToHTML& str) +{ + str.Print(os); + return os; +} + +} // end of namespace otb