diff --git a/src/insets/InsetHyperlink.cpp b/src/insets/InsetHyperlink.cpp index 6bf31aa36c..31737ec147 100644 --- a/src/insets/InsetHyperlink.cpp +++ b/src/insets/InsetHyperlink.cpp @@ -33,10 +33,10 @@ using std::find; using std::replace; //FIXME: these should be lists of char_type and not char -static char const * const chars_url[2] = {"%", "#"}; +static char_type const chars_url[2] = {'%', '#'}; -static char const * const chars_name[6] = { - "&", "_", "$", "%", "#", "^"}; +static char_type const chars_name[6] = { + '&', '_', '$', '%', '#', '^'}; InsetHyperlink::InsetHyperlink(InsetCommandParams const & p) @@ -77,10 +77,10 @@ int InsetHyperlink::latex(Buffer const &, odocstream & os, OutputParams const & runparams) const { //FIXME: all strings in this routine should be docstrings - string url = to_utf8(getParam("target")); + docstring url = getParam("target"); - string backslash = "\\"; - string braces = "{}"; + docstring backslash = from_ascii("\\"); + docstring braces = from_ascii("{}"); // The characters in chars_url[] need to be changed to a command when // they are in the url field. @@ -90,12 +90,12 @@ int InsetHyperlink::latex(Buffer const &, odocstream & os, for (size_t i = 0, pos; (pos = url.find(chars_url[k], i)) != string::npos; i = pos + 2) { - url.replace(pos,1,backslash + chars_url[k]); + url.replace(pos, 1, backslash + chars_url[k]); } } } // end if (!url.empty()) - string name = to_utf8(getParam("name")); + docstring name = getParam("name"); // The characters in chars_name[] need to be changed to a command when // they are in the name field. @@ -103,40 +103,42 @@ int InsetHyperlink::latex(Buffer const &, odocstream & os, // handle the "\" character, but only when the following character // is not also a "\", because "\\" is valid code + docstring textbackslash = from_ascii("\\textbackslash{}"); for (size_t i = 0, pos; - (pos = name.find("\\", i)) != string::npos; + (pos = name.find('\\', i)) != string::npos; i = pos + 2) { - if (name[pos+1] != '\\') - name.replace(pos,1,"\\textbackslash{}"); + if (name[pos + 1] != '\\') + name.replace(pos, 1, textbackslash); } for (int k = 0; k < 6; k++) { for (size_t i = 0, pos; (pos = name.find(chars_name[k], i)) != string::npos; i = pos + 2) { - name.replace(pos,1,backslash + chars_name[k] + braces); + name.replace(pos, 1, backslash + chars_name[k] + braces); } } // replace the tilde by the \sim character as suggested in the LaTeX FAQ // for URLs + docstring sim = from_ascii("$\\sim$"); for (int i = 0, pos; - (pos = name.find("~", i)) != string::npos; + (pos = name.find('~', i)) != string::npos; i = pos + 1) - name.replace(pos,1,"$\\sim$"); + name.replace(pos, 1, sim); } // end if (!name.empty()) //for the case there is no name given, the target is set as name - string urlname = url; + docstring urlname = url; // set the hyperlink type - url = to_utf8(getParam("type")) + url; + url += getParam("type"); if (runparams.moving_arg) os << "\\protect"; //set the target for the name when no name is given if (!name.empty()) - os << "\\href{" << from_utf8(url) << "}{" << from_utf8(name) << '}'; + os << "\\href{" << url << "}{" << name << '}'; else - os << "\\href{" << from_utf8(url) << "}{" << from_utf8(urlname) << '}'; + os << "\\href{" << url << "}{" << urlname << '}'; return 0; }