Select Git revision
-
Sébastien Blin authored
Change-Id: I8d5f968fbedbc884c91416246049a0ef4cd652eb
Sébastien Blin authoredChange-Id: I8d5f968fbedbc884c91416246049a0ef4cd652eb
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
vcard.cpp 1.74 KiB
/*
* Copyright (C) 2018-2024 Savoir-faire Linux Inc.
* Author: Sébastien Blin <sebastien.blin@savoirfairelinux.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "vcard.h"
namespace lrc {
namespace vCard {
namespace utils {
QHash<QByteArray, QByteArray>
toHashMap(const QByteArray& content)
{
// TODO without Qt
QHash<QByteArray, QByteArray> vCard;
QByteArray previousKey, previousValue;
const QList<QByteArray> lines = content.split('\n');
Q_FOREACH (const QByteArray& property, lines) {
// Ignore empty lines
if (property.size()) {
// Some properties are over multiple lines
if (property[0] == ' ' && previousKey.size()) {
previousValue += property.right(property.size() - 1);
}
// Do not use split, URIs can have : in them
const int dblptPos = property.indexOf(':');
const QByteArray k(property.left(dblptPos)),
v(property.right(property.size() - dblptPos - 1));
vCard[k] = v;
}
}
return vCard;
}
} // namespace utils
} // namespace vCard
} // namespace lrc