/* * Copyright (c) 2010 Remko Tronçon * Licensed under the GNU General Public License v3. * See Documentation/Licenses/GPLv3.txt for more information. */ #include "SwifTools/Linkify.h" #include #include #include namespace Swift { static boost::regex linkifyRegexp("^https?://.*"); std::string Linkify::linkify(const std::string& input) { std::ostringstream result; std::vector currentURL; bool inURL = false; for (size_t i = 0; i < input.size(); ++i) { char c = input[i]; if (inURL) { if (c != ' ' && c != '\t' && c != '\n') { currentURL.push_back(c); } else { std::string url(¤tURL[0], currentURL.size()); result << "" << url << ""; currentURL.clear(); inURL = false; result << c; } } else { if (boost::regex_match(input.substr(i, 8), linkifyRegexp)) { currentURL.push_back(c); inURL = true; } else { result << c; } } } if (currentURL.size() > 0) { std::string url(¤tURL[0], currentURL.size()); result << "" << url << ""; } return std::string(result.str()); } }