-
Notifications
You must be signed in to change notification settings - Fork 1
/
inflector.cpp
44 lines (37 loc) · 1.1 KB
/
inflector.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include "inflector.h"
#include <QRegularExpression>
/**
* @brief Inflector::humanize
* Creates space separated strings from camelcased or underscored strings.
* @param str in either "CamelCased" or "under_scored" format
* @return str in humanized form ("Camel Cased" or "under scored" for e.g.)
*/
QString Inflector::humanize(const QString & str)
{
static QRegularExpression regExp1 {"(.)([A-Z][a-z]+)"};
static QRegularExpression regExp2 {"([a-z0-9])([A-Z])"};
QString result = str;
result.replace('_', ' ');
result.replace(regExp1, "\\1 \\2");
result.replace(regExp2, "\\1 \\2");
return result;
}
QString Inflector::deUnderscore(const QString &str)
{
QString ret = str;
return ret.replace('_', ' ');
}
QString Inflector::upperFirst(const QString & str)
{
QString result = str;
if (str.length() > 1)
result.replace(0, 1, result.mid(0, 1).toUpper());
return result;
}
QString Inflector::lowerFirst(const QString & str)
{
QString result = str;
if (str.length() > 1)
result.replace(0, 1, result.mid(0, 1).toLower());
return result;
}