Skip to content
Snippets Groups Projects
Verified Commit a320fc6f authored by Nicolas Werner's avatar Nicolas Werner
Browse files

lint

parent 539db70f
No related branches found
No related tags found
No related merge requests found
Pipeline #4270 failed
......@@ -25,39 +25,46 @@ constexpr auto LABEL_MEDIUM_SIZE_RATIO = 1.3;
namespace strings {
const QString url_html = QStringLiteral("<a href=\"\\1\">\\1</a>");
const QRegularExpression url_regex(
const QRegularExpression
url_regex(
// match an unquoted URL
[](){
const auto
general_unicode = QStringLiteral(R"((?:[^\x{0}-\x{7f}\p{Cc}\s\p{P}]|[\x{2010}\x{2011}\x{2012}\x{2013}\x{2014}\x{2015}]))"),
protocol = QStringLiteral(R"((?:[Hh][Tt][Tt][Pp][Ss]?))"),
unreserved_subdelims_colon = QStringLiteral(R"([a-zA-Z0-9\-._~!$&'()*+,;=:])"),
pct_enc = QStringLiteral(R"((?:%[[:xdigit:]]{2}))"),
userinfo = "(?:" + unreserved_subdelims_colon + "*(?:" + pct_enc + unreserved_subdelims_colon + "*)*)",
dec_octet = QStringLiteral(R"((?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9]))"),
ipv4_addr = "(?:" + dec_octet + R"((?:\.)" + dec_octet + "){3})",
h16 = QStringLiteral(R"((?:[[:xdigit:]]{1,4}))"),
ls32 = "(?:" + h16 + ":" + h16 + "|" + ipv4_addr + ")",
ipv6_addr = "(?:"
"(?:" + h16 + ":){6}" + ls32
+ "|" "::(?:" + h16 + ":){5}" + ls32
+ "|" + h16 + "?::(?:" + h16 + ":){4}" + ls32
+ "|" "(?:" + h16 + "(?::" + h16 + "){0,1})?::(?:" + h16 + ":){3}" + ls32
+ "|" "(?:" + h16 + "(?::" + h16 + "){0,2})?::(?:" + h16 + ":){2}" + ls32
+ "|" "(?:" + h16 + "(?::" + h16 + "){0,3})?::" + h16 + ":" + ls32
+ "|" "(?:" + h16 + "(?::" + h16 + "){0,4})?::" + ls32
+ "|" "(?:" + h16 + "(?::" + h16 + "){0,5})?::" + h16
+ "|" "(?:" + h16 + "(?::" + h16 + "){0,6})?::"
")",
ipvfuture = R"((?:v[[:xdigit:]]+\.)" + unreserved_subdelims_colon + "+)",
ip_literal = R"((?:\[(?:)" + ipv6_addr + "|" + ipvfuture + R"()\]))",
host_alnum = "(?:[a-zA-Z0-9]|" + general_unicode + ")",
host_label = "(?:" + host_alnum + "+(?:-+" + host_alnum + "+)*)",
hostname = "(?:" + host_label + R"((?:\.)" + host_label + R"()*\.?))",
host = "(?:" + hostname + "|" + ip_literal + ")",
path = R"((?:/((?:[a-zA-Z0-9\-._~!$&'*+,;=:@/]|)" + pct_enc + R"(|\((?-1)\)|)" + general_unicode + ")*))",
query = R"(((?:[a-zA-Z0-9\-._~!$&'*+,;=:@/?\\{}]|)" + pct_enc + R"(|\((?-1)\)|\[(?-1)\]|)" + general_unicode + ")*)",
fragment = query;
[]() {
const auto general_unicode = QStringLiteral(
R"((?:[^\x{0}-\x{7f}\p{Cc}\s\p{P}]|[\x{2010}\x{2011}\x{2012}\x{2013}\x{2014}\x{2015}]))");
const auto protocol = QStringLiteral(R"((?:[Hh][Tt][Tt][Pp][Ss]?))");
const auto unreserved_subdelims_colon = QStringLiteral(R"([a-zA-Z0-9\-._~!$&'()*+,;=:])");
const auto pct_enc = QStringLiteral(R"((?:%[[:xdigit:]]{2}))");
const auto userinfo = "(?:" + unreserved_subdelims_colon + "*(?:" + pct_enc +
unreserved_subdelims_colon + "*)*)";
const auto dec_octet =
QStringLiteral(R"((?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9]))");
const auto ipv4_addr = "(?:" + dec_octet + R"((?:\.)" + dec_octet + "){3})";
const auto h16 = QStringLiteral(R"((?:[[:xdigit:]]{1,4}))");
const auto ls32 = "(?:" + h16 + ":" + h16 + "|" + ipv4_addr + ")";
// clang-format off
const auto ipv6_addr = "(?:"
"(?:" + h16 + ":){6}" + ls32
+ "|" "::(?:" + h16 + ":){5}" + ls32
+ "|" + h16 + "?::(?:" + h16 + ":){4}" + ls32
+ "|" "(?:" + h16 + "(?::" + h16 + "){0,1})?::(?:" + h16 + ":){3}" + ls32
+ "|" "(?:" + h16 + "(?::" + h16 + "){0,2})?::(?:" + h16 + ":){2}" + ls32
+ "|" "(?:" + h16 + "(?::" + h16 + "){0,3})?::" + h16 + ":" + ls32
+ "|" "(?:" + h16 + "(?::" + h16 + "){0,4})?::" + ls32
+ "|" "(?:" + h16 + "(?::" + h16 + "){0,5})?::" + h16
+ "|" "(?:" + h16 + "(?::" + h16 + "){0,6})?::"
")";
// clang-format on
const auto ipvfuture = R"((?:v[[:xdigit:]]+\.)" + unreserved_subdelims_colon + "+)";
const auto ip_literal = R"((?:\[(?:)" + ipv6_addr + "|" + ipvfuture + R"()\]))";
const auto host_alnum = "(?:[a-zA-Z0-9]|" + general_unicode + ")";
const auto host_label = "(?:" + host_alnum + "+(?:-+" + host_alnum + "+)*)";
const auto hostname = "(?:" + host_label + R"((?:\.)" + host_label + R"()*\.?))";
const auto host = "(?:" + hostname + "|" + ip_literal + ")";
const auto path = R"((?:/((?:[a-zA-Z0-9\-._~!$&'*+,;=:@/]|)" + pct_enc + R"(|\((?-1)\)|)" +
general_unicode + ")*))";
const auto query = R"(((?:[a-zA-Z0-9\-._~!$&'*+,;=:@/?\\{}]|)" + pct_enc +
R"(|\((?-1)\)|\[(?-1)\]|)" + general_unicode + ")*)";
const auto &fragment = query;
return
R"((?<!["'\w])(?>()"
+ protocol + "://"
......@@ -69,8 +76,7 @@ const QRegularExpression url_regex(
"(?<![.!?,;:'])"
R"())(?!["']))";
}(),
QRegularExpression::UseUnicodePropertiesOption
);
QRegularExpression::UseUnicodePropertiesOption);
// A matrix link to be converted back to markdown
static const QRegularExpression
matrixToLink(QStringLiteral(R"(<a href=\"(https://matrix.to/#/.*?)\">(.*?)</a>)"));
......
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