7#include "unicodeemoticonparser.h" 
    8#include "textemoticonscore_debug.h" 
   13using namespace TextEmoticonsCore;
 
   15UnicodeEmoticonParser::UnicodeEmoticonParser() = 
default;
 
   17UnicodeEmoticonParser::~UnicodeEmoticonParser() = 
default;
 
   21    auto aliases = [](
const QJsonArray &alternates, 
const QJsonArray &ascii) {
 
   24        auto convert = [&](
const QJsonArray &array) {
 
   25            auto toString = [](
const QJsonValue &value) {
 
   26                return value.toString();
 
   28            std::transform(array.begin(), array.end(), std::back_inserter(ret), toString);
 
   35    QList<UnicodeEmoticon> lstEmoticons;
 
   36    const QStringList keys = o.
keys();
 
   37    for (
const QString &key : keys) {
 
   38        UnicodeEmoticon emoticon;
 
   39        const QJsonObject emojiObj = o[key].toObject();
 
   41        const QString unicodeStr = emojiObj[
"code_points"_L1].toObject()[
"fully_qualified"_L1].toString();
 
   42        Q_ASSERT(!unicodeStr.
isEmpty());
 
   43        emoticon.setUnicode(unicodeStr);
 
   44        const QString 
category = emojiObj[
"category"_L1].toString();
 
   45        emoticon.setCategory(category);
 
   46        emoticon.setIdentifier(emojiObj[
"shortname"_L1].
toString());
 
   47        emoticon.setOrder(emojiObj[
"order"_L1].toInt());
 
   48        emoticon.setDiversityChildren(!emojiObj[
"diversity_children"_L1].toArray().isEmpty());
 
   49        const auto shortnameAlternates = emojiObj[
"shortname_alternates"_L1].toArray();
 
   50        const auto ascii = emojiObj[
"ascii"_L1].toArray();
 
   51        emoticon.setAliases(aliases(shortnameAlternates, ascii));
 
   52        if (emoticon.isValid()) {
 
   53            lstEmoticons.
append(std::move(emoticon));
 
   56    auto compareOrder = [](
const UnicodeEmoticon &
left, 
const UnicodeEmoticon &
right) {
 
   59    std::sort(lstEmoticons.
begin(), lstEmoticons.
end(), compareOrder);
 
   63int UnicodeEmoticonParser::changeOrder(
const QString &name)
 
   66    if (name == 
"people"_L1) {
 
   68    } 
else if (name == 
"flags"_L1) {
 
   70    } 
else if (name == 
"travel"_L1) {
 
   72    } 
else if (name == 
"symbols"_L1) {
 
   74    } 
else if (name == 
"activity"_L1) {
 
   76    } 
else if (name == 
"objects"_L1) {
 
   78    } 
else if (name == 
"nature"_L1) {
 
   80    } 
else if (name == 
"food"_L1) {
 
   82    } 
else if (name == 
"regional"_L1) {
 
   85        qCWarning(TEXTEMOTICONSCORE_LOG) << 
"Missing i18n translate " << 
name;
 
char * toString(const EngineQuery &query)
 
T convert(const QVariant &value)
 
QString name(StandardAction id)
 
Category category(StandardShortcut id)
 
qsizetype size() const const
 
QStringList keys() const const
 
void append(QList< T > &&value)
 
void reserve(qsizetype size)
 
bool isEmpty() const const
 
QTextStream & left(QTextStream &stream)
 
QTextStream & right(QTextStream &stream)