Chatterino
Helpers.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <QColor>
4 #include <QString>
5 #include <QStringRef>
6 
7 #include <cmath>
8 
9 namespace chatterino {
10 
11 // only qualified for tests
12 namespace _helpers_internal {
13 
22  int skipSpace(const QStringRef &view, int startPos);
23 
31  bool matchesIgnorePlural(const QStringRef &word, const QString &expected);
32 
48  std::pair<uint64_t, bool> findUnitMultiplierToSec(const QStringRef &view,
49  int &pos);
50 
51 } // namespace _helpers_internal
52 
57 bool startsWithOrContains(const QString &str1, const QString &str2,
58  Qt::CaseSensitivity caseSensitivity, bool startsWith);
59 
64 bool isNeutral(const QString &s);
65 QString generateUuid();
66 
67 QString formatRichLink(const QString &url, bool file = false);
68 
69 QString formatRichNamedLink(const QString &url, const QString &name,
70  bool file = false);
71 
72 QString shortenString(const QString &str, unsigned maxWidth = 50);
73 
74 QString localizeNumbers(const int &number);
75 
76 QString kFormatNumbers(const int &number);
77 
78 QColor getRandomColor(const QString &userId);
79 
108 int64_t parseDurationToSeconds(const QString &inputString,
109  uint64_t noUnitMultiplier = 1);
110 
118 QString formatUserMention(const QString &userName, bool isFirstWord,
119  bool mentionUsersWithComma);
120 
121 template <typename T>
122 std::vector<T> splitListIntoBatches(const T &list, int batchSize = 100)
123 {
124  std::vector<T> batches;
125  int batchCount = std::ceil(static_cast<double>(list.size()) / batchSize);
126  batches.reserve(batchCount);
127 
128  auto it = list.cbegin();
129 
130  for (int j = 0; j < batchCount; j++)
131  {
132  T batch;
133 
134  for (int i = 0; i < batchSize && it != list.end(); i++)
135  {
136  batch.append(*it);
137  it++;
138  }
139  if (batch.empty())
140  {
141  break;
142  }
143  batches.emplace_back(std::move(batch));
144  }
145 
146  return batches;
147 }
148 
149 } // namespace chatterino
bool matchesIgnorePlural(const QStringRef &word, const QString &singular)
Definition: Helpers.cpp:23
bool startsWithOrContains(const QString &str1, const QString &str2, Qt::CaseSensitivity caseSensitivity, bool startsWith)
startsWithOrContains is a wrapper for checking whether str1 starts with or contains str2 within itsel...
Definition: Helpers.cpp:116
int64_t parseDurationToSeconds(const QString &inputString, uint64_t noUnitMultiplier)
Definition: Helpers.cpp:208
Definition: Application.cpp:48
QString generateUuid()
Definition: Helpers.cpp:134
int skipSpace(const QStringRef &view, int startPos)
Definition: Helpers.cpp:14
std::pair< uint64_t, bool > findUnitMultiplierToSec(const QStringRef &view, int &pos)
Definition: Helpers.cpp:37
QString localizeNumbers(const int &number)
Definition: Helpers.cpp:165
QColor getRandomColor(const QString &userId)
Definition: Helpers.cpp:176
QString shortenString(const QString &str, unsigned maxWidth)
Definition: Helpers.cpp:152
QString formatUserMention(const QString &userName, bool isFirstWord, bool mentionUsersWithComma)
Takes a user&#39;s name and some formatting parameter and spits out the standardized way to format it...
Definition: Helpers.cpp:195
std::vector< T > splitListIntoBatches(const T &list, int batchSize=100)
Definition: Helpers.hpp:122
QString kFormatNumbers(const int &number)
Definition: Helpers.cpp:171
QString formatRichNamedLink(const QString &url, const QString &name, bool file)
Definition: Helpers.cpp:146
QString name
Definition: Credentials.cpp:94
QString formatRichLink(const QString &url, bool file)
Definition: Helpers.cpp:140
bool isNeutral(const QString &s)
isNeutral checks if the string doesn&#39;t contain any character in the unicode "letter" category i...
Definition: Helpers.cpp:127