Skip to content
Snippets Groups Projects
Commit 9e3aa6d5 authored by Guillaume Pasero's avatar Guillaume Pasero
Browse files

BUG: Mantis-1489: utility class to prepare string for HTML encapsulation

parent 07eaae02
No related branches found
No related tags found
No related merge requests found
/*
* 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
......@@ -28,6 +28,7 @@ set(OTBCommon_SRC
otbStandardOneLineFilterWatcher.cxx
otbWriterWatcherBase.cxx
otbStopwatch.cxx
otbStringToHTML.cxx
)
add_library(OTBCommon ${OTBCommon_SRC})
......
/*
* 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("&lt;",4);
break;
case '>':
os.write("&gt;",4);
break;
case '&':
os.write("&amp;",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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment