chore: restructure llm plugin to be more coherent & fix various bugs in llm ui
C++ / fmt (pull_request) Failing after 6s
C++ / build (pull_request) Failing after 10s
C++ / clang-tidy (pull_request) Failing after 9s
JS/TS / fmt (pull_request) Successful in 10s
JS/TS / lint (pull_request) Successful in 8s
Python / static (pull_request) Successful in 30s
Rust / build (pull_request) Successful in 49s
Python / verify (pull_request) Successful in 1m35s
Rust / fmt (pull_request) Successful in 36s
Rust / clippy (pull_request) Successful in 54s
C++ / fmt (pull_request) Failing after 6s
C++ / build (pull_request) Failing after 10s
C++ / clang-tidy (pull_request) Failing after 9s
JS/TS / fmt (pull_request) Successful in 10s
JS/TS / lint (pull_request) Successful in 8s
Python / static (pull_request) Successful in 30s
Rust / build (pull_request) Successful in 49s
Python / verify (pull_request) Successful in 1m35s
Rust / fmt (pull_request) Successful in 36s
Rust / clippy (pull_request) Successful in 54s
This commit is contained in:
@@ -1,18 +1,15 @@
|
||||
#include "markdownparser.hpp"
|
||||
|
||||
#include "markdownblock.hpp"
|
||||
|
||||
#include <cmark-gfm-extension_api.h>
|
||||
#include <cmark-gfm.h>
|
||||
|
||||
#include <QRegularExpression>
|
||||
#include <QStringList>
|
||||
#include <QVariantMap>
|
||||
|
||||
namespace ZShell::llm {
|
||||
|
||||
QVariantList MarkdownParser::parse(const QString& source) {
|
||||
QVariantList blocks;
|
||||
QVector<MarkdownBlockData> MarkdownParser::parse(const QString& source) {
|
||||
QVector<MarkdownBlockData> blocks;
|
||||
if (source.trimmed().isEmpty()) return blocks;
|
||||
|
||||
const QStringList lines = source.split('\n');
|
||||
@@ -35,42 +32,36 @@ QVariantList MarkdownParser::parse(const QString& source) {
|
||||
QStringLiteral("\\$\\$(.+?)\\$\\$"),
|
||||
QRegularExpression::DotMatchesEverythingOption);
|
||||
|
||||
auto makeBlock = [&](LlmMarkdown::Type type) {
|
||||
QVariantMap block;
|
||||
block.insert("type", static_cast<int>(type));
|
||||
block.insert(
|
||||
"id",
|
||||
QString::number(static_cast<int>(blocks.size())) +
|
||||
QLatin1Char(':') + QString::number(static_cast<int>(type)));
|
||||
return block;
|
||||
};
|
||||
|
||||
auto appendText = [&](const QString& text) {
|
||||
if (text.trimmed().isEmpty()) return;
|
||||
QVariantMap block = makeBlock(LlmMarkdown::Type::Text);
|
||||
block.insert("text", text);
|
||||
MarkdownBlockData block;
|
||||
block.type = MarkdownBlock::Type::Text;
|
||||
block.text = text;
|
||||
blocks.append(block);
|
||||
};
|
||||
|
||||
auto appendMath = [&](const QString& latex) {
|
||||
if (latex.trimmed().isEmpty()) return;
|
||||
QVariantMap block = makeBlock(LlmMarkdown::Type::Math);
|
||||
block.insert("latex", latex);
|
||||
MarkdownBlockData block;
|
||||
block.type = MarkdownBlock::Type::Math;
|
||||
block.latex = latex;
|
||||
blocks.append(block);
|
||||
};
|
||||
|
||||
auto appendCode = [&](const QString& language, const QString& code) {
|
||||
QVariantMap block = makeBlock(LlmMarkdown::Type::Code);
|
||||
block.insert("language", language);
|
||||
block.insert("code", code);
|
||||
MarkdownBlockData block;
|
||||
block.type = MarkdownBlock::Type::Code;
|
||||
block.language = language;
|
||||
block.code = code;
|
||||
blocks.append(block);
|
||||
};
|
||||
|
||||
auto appendHeading = [&](int level, const QString& text) {
|
||||
if (text.trimmed().isEmpty()) return;
|
||||
QVariantMap block = makeBlock(LlmMarkdown::Type::Heading);
|
||||
block.insert("level", level);
|
||||
block.insert("text", text);
|
||||
MarkdownBlockData block;
|
||||
block.type = MarkdownBlock::Type::Heading;
|
||||
block.level = level;
|
||||
block.text = text;
|
||||
blocks.append(block);
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user