#include "CodeFormatServer/VSCode.h"
vscode::Serializable::~Serializable()
{
}
vscode::Position::Position(uint64_t _line, uint64_t _character)
: line(_line),
character(_character)
{
}
nlohmann::json vscode::Position::Serialize()
{
auto object = nlohmann::json::object();
object["line"] = line;
object["character"] = character;
return object;
}
void vscode::Position::Deserialize(nlohmann::json json)
{
line = json["line"];
character = json["character"];
}
vscode::Range::Range(Position _start, Position _end)
: start(_start),
end(_end)
{
}
nlohmann::json vscode::Range::Serialize()
{
auto object = nlohmann::json::object();
object["start"] = start.Serialize();
object["end"] = end.Serialize();
return object;
}
void vscode::Range::Deserialize(nlohmann::json json)
{
start.Deserialize(json["start"]);
end.Deserialize(json["end"]);
}
nlohmann::json vscode::Location::Serialize()
{
auto object = nlohmann::json::object();
object["range"] = range.Serialize();
object["uri"] = uri;
return object;
}
void vscode::Location::Deserialize(nlohmann::json json)
{
range.Deserialize(json["range"]);
uri = json["uri"];
}
vscode::Diagnostic::Diagnostic()
{
}
nlohmann::json vscode::Diagnostic::Serialize()
{
auto object = nlohmann::json::object();
object["message"] = message;
object["range"] = range.Serialize();
object["severity"] = static_cast(severity);
return object;
}
void vscode::Diagnostic::Deserialize(nlohmann::json json)
{
message = json["message"];
range.Deserialize(json["range"]);
severity = static_cast(json["severity"].get());
}
nlohmann::json vscode::TextDocument::Serialize()
{
auto object = nlohmann::json::object();
object["uri"] = uri;
return object;
}
void vscode::TextDocument::Deserialize(nlohmann::json json)
{
uri = json["uri"];
}
nlohmann::json vscode::TextEdit::Serialize()
{
auto object = nlohmann::json::object();
object["range"] = range.Serialize();
object["newText"] = newText;
return object;
}
nlohmann::json vscode::PublishDiagnosticsParams::Serialize()
{
auto object = nlohmann::json::object();
object["uri"] = uri;
auto array = nlohmann::json::array();
for (auto& diagnositc : diagnostics)
{
array.push_back(diagnositc.Serialize());
}
object["diagnostics"] = array;
return object;
}
void vscode::PublishDiagnosticsParams::Deserialize(nlohmann::json json)
{
uri = json["uri"];
auto dianosticsArray = json["diagnostics"];
for (auto diagnostic : dianosticsArray)
{
diagnostics.emplace_back();
diagnostics.back().Deserialize(diagnostic);
}
}
nlohmann::json vscode::TextDocumentSyncOptions::Serialize()
{
auto object = nlohmann::json::object();
object["openClose"] = openClose;
object["change"] = change;
object["willSave"] = willSave;
object["willSaveWaitUntil"] = willSaveWaitUntil;
return object;
}
nlohmann::json vscode::ServerCapabilities::Serialize()
{
auto object = nlohmann::json::object();
object["textDocumentSync"] = textDocumentSync.Serialize();
object["documentFormattingProvider"] = documentFormattingProvider;
object["documentRangeFormattingProvider"] = documentRangeFormattingProvider;
object["documentOnTypeFormattingProvider"] = documentOnTypeFormattingProvider.Serialize();
object["codeActionProvider"] = codeActionProvider;
object["executeCommandProvider"] = executeCommandProvider.Serialize();
object["completionProvider"] = completionProvider.Serialize();
return object;
}
void vscode::InitializationOptions::Deserialize(nlohmann::json json)
{
if (json["editorConfigFiles"].is_array())
{
auto configFileArray = json["editorConfigFiles"];
for (auto& configSource : configFileArray)
{
auto& source = editorConfigFiles.emplace_back();
source.Deserialize(configSource);
}
}
if (json["moduleConfigFiles"].is_array())
{
auto configFileArray = json["moduleConfigFiles"];
for (auto& configSource : configFileArray)
{
auto& source = moduleConfigFiles.emplace_back();
source.Deserialize(configSource);
}
}
if (json["workspaceFolders"].is_array())
{
auto workspaceFolderArray = json["workspaceFolders"];
for (auto& workspaceUri : workspaceFolderArray)
{
workspaceFolders.emplace_back(workspaceUri);
}
}
if (json["localeRoot"].is_string())
{
localeRoot = json["localeRoot"];
}
if(json["extensionChars"].is_string())
{
extensionChars = json["extensionChars"];
}
}
void vscode::InitializeParams::Deserialize(nlohmann::json json)
{
if (json["rootPath"].is_string())
{
rootPath = json["rootPath"];
}
if (json["rootUri"].is_string())
{
rootUri = json["rootUri"];
}
if (json["locale"].is_string())
{
locale = json["locale"];
}
initializationOptions.Deserialize(json["initializationOptions"]);
}
nlohmann::json vscode::InitializeResult::Serialize()
{
auto object = nlohmann::json::object();
object["capabilities"] = capabilities.Serialize();
return object;
}
void vscode::InitializeResult::Deserialize(nlohmann::json json)
{
capabilities.Deserialize(json["capabilities"]);
}
void vscode::TextDocumentContentChangeEvent::Deserialize(nlohmann::json json)
{
text = json["text"];
if (!json["range"].is_null())
{
auto textRange = Range();
textRange.Deserialize(json["range"]);
range = textRange;
}
}
void vscode::DidChangeTextDocumentParams::Deserialize(nlohmann::json json)
{
auto contentChangeArray = json["contentChanges"];
for (auto contentChange : contentChangeArray)
{
contentChanges.emplace_back();
contentChanges.back().Deserialize(contentChange);
}
textDocument.Deserialize(json["textDocument"]);
}
void vscode::TextDocumentItem::Deserialize(nlohmann::json json)
{
uri = json["uri"];
languageId = json["languageId"];
text = json["text"];
}
void vscode::DidOpenTextDocumentParams::Deserialize(nlohmann::json json)
{
textDocument.Deserialize(json["textDocument"]);
}
void vscode::DocumentFormattingParams::Deserialize(nlohmann::json json)
{
textDocument.Deserialize(json["textDocument"]);
}
nlohmann::json vscode::DocumentFormattingResult::Serialize()
{
if (hasError)
{
return nullptr;
}
else
{
auto array = nlohmann::json::array();
for (auto& edit : edits)
{
array.push_back(edit.Serialize());
}
return array;
}
}
void vscode::DidCloseTextDocumentParams::Deserialize(nlohmann::json json)
{
textDocument.Deserialize(json["textDocument"]);
}
void vscode::ConfigSource::Deserialize(nlohmann::json json)
{
uri = json["uri"];
path = json["path"];
workspace = json["workspace"];
}
void vscode::ConfigUpdateParams::Deserialize(nlohmann::json json)
{
type = json["type"];
source.Deserialize(json["source"]);
}
void vscode::DocumentRangeFormattingParams::Deserialize(nlohmann::json json)
{
textDocument.Deserialize(json["textDocument"]);
range.Deserialize(json["range"]);
}
nlohmann::json vscode::DocumentOnTypeFormattingOptions::Serialize()
{
auto object = nlohmann::json::object();
object["firstTriggerCharacter"] = firstTriggerCharacter;
auto array = nlohmann::json::array();
for (auto& c : moreTriggerCharacter)
{
array.push_back(c);
}
object["moreTriggerCharacter"] = array;
return object;
}
nlohmann::json vscode::ExecuteCommandOptions::Serialize()
{
auto object = nlohmann::json::object();
auto array = nlohmann::json::array();
for (auto& command : commands)
{
array.push_back(command);
}
object["commands"] = array;
return object;
}
nlohmann::json vscode::CompletionItemOptions::Serialize()
{
auto object = nlohmann::json::object();
object["labelDetailsSupport"] = labelDetailsSupport;
return object;
}
nlohmann::json vscode::CompletionOptions::Serialize()
{
auto object = nlohmann::json::object();
object["triggerCharacters"] = SerializeArray(triggerCharacters);
object["resolveProvider"] = resolveProvider;
object["completionItem"] = completionItem.Serialize();
return object;
}
void vscode::TextDocumentPositionParams::Deserialize(nlohmann::json json)
{
textDocument.Deserialize(json["textDocument"]);
position.Deserialize(json["position"]);
}
void vscode::CodeActionContext::Deserialize(nlohmann::json json)
{
auto jsonDiagnostics = json["diagnostics"];
if (jsonDiagnostics.is_array())
{
for (auto& diagnostic : jsonDiagnostics)
{
diagnostics.emplace_back().Deserialize(diagnostic);
}
}
}
void vscode::CodeActionParams::Deserialize(nlohmann::json json)
{
textDocument.Deserialize(json["textDocument"]);
range.Deserialize(json["range"]);
context.Deserialize(json["context"]);
}
nlohmann::json vscode::Command::Serialize()
{
auto object = nlohmann::json::object();
object["title"] = title;
object["command"] = command;
auto array = nlohmann::json::array();
for (auto& arg : arguments)
{
array.push_back(arg);
}
object["arguments"] = array;
return object;
}
nlohmann::json vscode::CodeAction::Serialize()
{
auto object = nlohmann::json::object();
object["title"] = title;
object["command"] = command.Serialize();
object["kind"] = kind;
return object;
}
nlohmann::json vscode::CodeActionResult::Serialize()
{
auto array = nlohmann::json::array();
for (auto& action : actions)
{
array.push_back(action.Serialize());
}
return array;
}
void vscode::ExecuteCommandParams::Deserialize(nlohmann::json json)
{
command = json["command"];
auto args = json["arguments"];
if (args.is_array())
{
for (auto arg : args)
{
if (!arg.is_null())
{
arguments.push_back(arg);
}
}
}
}
nlohmann::json vscode::OptionalVersionedTextDocumentIdentifier::Serialize()
{
auto object = TextDocument::Serialize();
if (version.has_value())
{
object["version"] = version.value();
}
else
{
object["version"] = nullptr;
}
return object;
}
nlohmann::json vscode::TextDocumentEdit::Serialize()
{
auto object = nlohmann::json::object();
object["textDocument"] = textDocument.Serialize();
object["edits"] = SerializeArray(edits);
return object;
}
nlohmann::json vscode::WorkspaceEdit::Serialize()
{
auto object = nlohmann::json::object();
auto changesObject = nlohmann::json::object();
for (auto it : changes)
{
changesObject[it.first] = SerializeArray(it.second);
}
object["changes"] = changesObject;
return object;
}
nlohmann::json vscode::ApplyWorkspaceEditParams::Serialize()
{
auto object = nlohmann::json::object();
if (label.has_value())
{
object["label"] = label.value();
}
else
{
object["label"] = nullptr;
}
object["edit"] = edit.Serialize();
return object;
}
void vscode::FileEvent::Deserialize(nlohmann::json json)
{
uri = json["uri"];
type = static_cast(static_cast(json["type"]));
}
void vscode::DidChangeWatchedFilesParams::Deserialize(nlohmann::json json)
{
if (json["changes"].is_array())
{
for (auto& v : json["changes"])
{
changes.emplace_back().Deserialize(v);
}
}
}
void vscode::CompletionParams::Deserialize(nlohmann::json json)
{
textDocument.Deserialize(json["textDocument"]);
position.Deserialize(json["position"]);
}
nlohmann::json vscode::CompletionItemLabelDetails::Serialize()
{
auto object = nlohmann::json::object();
object["detail"] = detail;
if (description.has_value())
{
object["description"] = description.value();
}
return object;
}
nlohmann::json vscode::CompletionItem::Serialize()
{
auto object = nlohmann::json::object();
object["label"] = label;
object["kind"] = static_cast(kind);
object["detail"] = detail;
object["documentation"] = documentation;
object["insertText"] = insertText;
if(sortText.has_value())
{
object["sortText"] = sortText.value();
}
if (filterText.has_value())
{
object["filterText"] = filterText.value();
}
if (command.has_value())
{
object["command"] = command->Serialize();
}
if(labelDetails.has_value())
{
object["labelDetails"] = labelDetails->Serialize();
}
return object;
}
nlohmann::json vscode::CompletionList::Serialize()
{
auto object = nlohmann::json::object();
object["isIncomplete"] = isIncomplete;
object["items"] = SerializeArray(items);
return object;
}