bool isHex(docstring const & str);
-int hexToInt(docstring const & str);
+unsigned int hexToInt(docstring const & str);
/// is \p str pure ascii?
bool isAscii(docstring const & str);
/// Truncates a string with an ellipsis at the end. Leaves str unchanged and
/// returns false if it is shorter than len. Otherwise resizes str to len, with
/// U+2026 HORIZONTAL ELLIPSIS at the end, and returns true.
+/// If mid is true, the ellipsis will be put to the mid of the string, and the first
+/// and last half is appended/prepended.
///
/// Warning (Unicode): The cases where we want to truncate the text and it does
/// not end up converted into a QString for UI display must be really
///
/// FIXME: apply those principles in the current code.
///
-bool truncateWithEllipsis(docstring & str, size_t const len);
+bool truncateWithEllipsis(docstring & str, size_t const len,
+ bool const mid = false);
/// Word-wraps the provided docstring, returning a line-broken string
/// of width no wider than width, with the string broken at spaces.
/// \p ex defines a string of characters that are excluded from the transformation
docstring to_percent_encoding(docstring const & in, docstring const & ex = docstring());
+/// Returns a string decoded from an URI/URL-style percent-encoded string \p in.
+std::string from_percent_encoding(std::string const & in);
docstring bformat(docstring const & fmt, int arg1);
docstring bformat(docstring const & fmt, long arg1);