mirror of
https://github.com/Palm1r/QodeAssist.git
synced 2025-07-18 04:54:30 -04:00
refactor: Extract document reading to separate class (#127)
This decouples LLMClientInterface from Qt Creator text editor implementation and allows to write tests
This commit is contained in:
committed by
GitHub
parent
a218064a4f
commit
719065ebfc
@ -3,6 +3,8 @@ add_library(Context STATIC
|
||||
ChangesManager.h ChangesManager.cpp
|
||||
ContextManager.hpp ContextManager.cpp
|
||||
ContentFile.hpp
|
||||
DocumentReaderQtCreator.hpp
|
||||
IDocumentReader.hpp
|
||||
TokenUtils.hpp TokenUtils.cpp
|
||||
ProgrammingLanguage.hpp ProgrammingLanguage.cpp
|
||||
)
|
||||
|
45
context/DocumentReaderQtCreator.hpp
Normal file
45
context/DocumentReaderQtCreator.hpp
Normal file
@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Copyright (C) 2025 Povilas Kanapickas
|
||||
*
|
||||
* This file is part of QodeAssist.
|
||||
*
|
||||
* QodeAssist is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* QodeAssist 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 General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with QodeAssist. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "IDocumentReader.hpp"
|
||||
|
||||
#include <texteditor/textdocument.h>
|
||||
|
||||
namespace QodeAssist::Context {
|
||||
|
||||
class DocumentReaderQtCreator : public IDocumentReader
|
||||
{
|
||||
public:
|
||||
DocumentInfo readDocument(const QString &path) const override
|
||||
{
|
||||
auto *textDocument = TextEditor::TextDocument::textDocumentForFilePath(
|
||||
Utils::FilePath::fromString(path));
|
||||
if (!textDocument) {
|
||||
return {};
|
||||
}
|
||||
return {
|
||||
.document = textDocument->document(),
|
||||
.mimeType = textDocument->mimeType(),
|
||||
.filePath = path};
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace QodeAssist::Context
|
41
context/IDocumentReader.hpp
Normal file
41
context/IDocumentReader.hpp
Normal file
@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Copyright (C) 2025 Povilas Kanapickas
|
||||
*
|
||||
* This file is part of QodeAssist.
|
||||
*
|
||||
* QodeAssist is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* QodeAssist 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 General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with QodeAssist. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QTextDocument>
|
||||
|
||||
namespace QodeAssist::Context {
|
||||
|
||||
struct DocumentInfo
|
||||
{
|
||||
QTextDocument *document = nullptr; // not owned
|
||||
QString mimeType;
|
||||
QString filePath;
|
||||
};
|
||||
|
||||
class IDocumentReader
|
||||
{
|
||||
public:
|
||||
virtual ~IDocumentReader() = default;
|
||||
|
||||
virtual DocumentInfo readDocument(const QString &path) const = 0;
|
||||
};
|
||||
|
||||
} // namespace QodeAssist::Context
|
Reference in New Issue
Block a user