aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/coreSQLiteStudio/csvformat.cpp
blob: c5019c3596361791391ef86676d68f38b935f569 (plain) (blame)
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
45
46
47
48
49
50
51
52
53
54
#include "csvformat.h"
#include <QtGlobal>

const CsvFormat CsvFormat::DEFAULT = {{","}, {"\r\n", "\n", "\r"}};

CsvFormat::CsvFormat()
{
}

CsvFormat::CsvFormat(const QString& columnSeparator, const QString& rowSeparator) :
    columnSeparator(columnSeparator), rowSeparator(rowSeparator)
{
    calculateSeparatorMaxLengths();
}

CsvFormat::CsvFormat(const QStringList &columnSeparators, const QStringList &rowSeparators)
{
    if (rowSeparators.size() > 1)
    {
        this->rowSeparators = rowSeparators;
        multipleRowSeparators = true;
        strictRowSeparator = true;
    }
    else if (rowSeparators.size() > 0)
        this->rowSeparator = rowSeparators.first();

    if (columnSeparators.size() > 1)
    {
        this->columnSeparators = columnSeparators;
        multipleColumnSeparators = true;
        strictColumnSeparator = true;
    }
    else if (columnSeparators.size() > 0)
        this->columnSeparator = columnSeparators.first();

    calculateSeparatorMaxLengths();
}

CsvFormat::CsvFormat(const QString& columnSeparator, const QString& rowSeparator, bool strictRowSeparator, bool strictColumnSeparator) :
    columnSeparator(columnSeparator), rowSeparator(rowSeparator), strictColumnSeparator(strictColumnSeparator), strictRowSeparator(strictRowSeparator)
{
    calculateSeparatorMaxLengths();
}

void CsvFormat::calculateSeparatorMaxLengths()
{
    maxColumnSeparatorLength = columnSeparator.length();
    for (const QString& sep : columnSeparators)
        maxColumnSeparatorLength = qMax(sep.length(), maxColumnSeparatorLength);

    maxRowSeparatorLength = rowSeparator.length();
    for (const QString& sep : rowSeparators)
        maxRowSeparatorLength = qMax(sep.length(), maxRowSeparatorLength);
}