// Copyright (C) 2018 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #include "completion.h" namespace LanguageServerProtocol { constexpr const char CompletionRequest::methodName[]; constexpr const char CompletionItemResolveRequest::methodName[]; CompletionRequest::CompletionRequest(const CompletionParams ¶ms) : Request(methodName, params) { } std::optional CompletionItem::documentation() const { QJsonValue documentation = value(documentationKey); if (documentation.isUndefined()) return std::nullopt; return MarkupOrString(documentation); } std::optional CompletionItem::insertTextFormat() const { if (std::optional value = optionalValue(insertTextFormatKey)) return std::make_optional(CompletionItem::InsertTextFormat(*value)); return std::nullopt; } std::optional> CompletionItem::tags() const { if (const auto value = optionalValue(tagsKey)) { QList tags; for (auto it = value->cbegin(); it != value->cend(); ++it) tags << static_cast(it->toInt()); return tags; } return {}; } CompletionItemResolveRequest::CompletionItemResolveRequest(const CompletionItem ¶ms) : Request(methodName, params) { } CompletionResult::CompletionResult(const QJsonValue &value) { if (value.isNull()) { emplace(nullptr); } else if (value.isArray()) { QList items; for (auto arrayElement : value.toArray()) items << CompletionItem(arrayElement); emplace>(items); } else if (value.isObject()) { emplace(CompletionList(value)); } } } // namespace LanguageServerProtocol