| 120 | } |
| 121 | |
| 122 | void MimeTypeCache::addGlobPattern(const QString& pattern, ILanguageSupport* language) |
| 123 | { |
| 124 | if (pattern.isEmpty()) { |
| 125 | qCWarning(SHELL) << "Attempt to add an invalid empty glob pattern."; |
| 126 | return; // An empty pattern won't match a filename. |
| 127 | } |
| 128 | |
| 129 | if (pattern.front() == QLatin1Char{'*'}) { |
| 130 | if (pattern.size() > 1 && !containsWildcardCharacter(pattern.cbegin() + 1, pattern.cend())) { |
| 131 | const auto lastChar = pattern.back().toLower(); |
| 132 | StringLanguagePair suffix{pattern.mid(1).toLower(), language}; |
| 133 | if (!m_suffixes.contains(lastChar, suffix)) { |
| 134 | m_suffixes.insert(lastChar, std::move(suffix)); |
| 135 | } |
| 136 | return; |
| 137 | } |
| 138 | } else if (!containsWildcardCharacter(pattern.cbegin(), pattern.cend())) { |
| 139 | m_literalPatterns.emplace_back(pattern, language); |
| 140 | return; |
| 141 | } |
| 142 | |
| 143 | QRegularExpression regularExpression(QRegularExpression::wildcardToRegularExpression(pattern), |
| 144 | QRegularExpression::CaseInsensitiveOption); |
| 145 | m_regularExpressions.emplace_back(std::move(regularExpression), language); |
| 146 | } |
| 147 | |
| 148 | } // namespace |
| 149 | |