forked from qt-creator/qt-creator
TextEditor: move ParsedSnippet out of snippet
Change-Id: I4e9c7d810fdd0904386f8d3b3481c0a4855c2021 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -160,12 +160,12 @@ struct SnippetReplacement
|
|||||||
int posDelta = 0;
|
int posDelta = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
static SnippetReplacement replacementAt(int pos, Snippet::ParsedSnippet &parsedSnippet)
|
static SnippetReplacement replacementAt(int pos, ParsedSnippet &parsedSnippet)
|
||||||
{
|
{
|
||||||
static const char kOpenBold[] = "<b>";
|
static const char kOpenBold[] = "<b>";
|
||||||
static const char kCloseBold[] = "</b>";
|
static const char kCloseBold[] = "</b>";
|
||||||
|
|
||||||
auto mangledText = [](const QString &text, const Snippet::ParsedSnippet::Range &range) {
|
auto mangledText = [](const QString &text, const ParsedSnippet::Range &range) {
|
||||||
if (range.length == 0)
|
if (range.length == 0)
|
||||||
return QString("...");
|
return QString("...");
|
||||||
if (NameMangler *mangler = range.mangler)
|
if (NameMangler *mangler = range.mangler)
|
||||||
@@ -174,7 +174,7 @@ static SnippetReplacement replacementAt(int pos, Snippet::ParsedSnippet &parsedS
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (!parsedSnippet.ranges.isEmpty() && parsedSnippet.ranges.first().start == pos) {
|
if (!parsedSnippet.ranges.isEmpty() && parsedSnippet.ranges.first().start == pos) {
|
||||||
Snippet::ParsedSnippet::Range range = parsedSnippet.ranges.takeFirst();
|
ParsedSnippet::Range range = parsedSnippet.ranges.takeFirst();
|
||||||
return {kOpenBold + mangledText(parsedSnippet.text, range) + kCloseBold, range.length};
|
return {kOpenBold + mangledText(parsedSnippet.text, range) + kCloseBold, range.length};
|
||||||
}
|
}
|
||||||
return {};
|
return {};
|
||||||
@@ -215,13 +215,13 @@ QString Snippet::generateTip() const
|
|||||||
return tip;
|
return tip;
|
||||||
}
|
}
|
||||||
|
|
||||||
Snippet::ParsedSnippet Snippet::parse(const QString &snippet)
|
ParsedSnippet Snippet::parse(const QString &snippet)
|
||||||
{
|
{
|
||||||
static UppercaseMangler ucMangler;
|
static UppercaseMangler ucMangler;
|
||||||
static LowercaseMangler lcMangler;
|
static LowercaseMangler lcMangler;
|
||||||
static TitlecaseMangler tcMangler;
|
static TitlecaseMangler tcMangler;
|
||||||
|
|
||||||
Snippet::ParsedSnippet result;
|
ParsedSnippet result;
|
||||||
|
|
||||||
QString errorMessage;
|
QString errorMessage;
|
||||||
QString preprocessedSnippet
|
QString preprocessedSnippet
|
||||||
@@ -418,7 +418,7 @@ void Internal::TextEditorPlugin::testSnippetParsing()
|
|||||||
Q_ASSERT(ranges_start.count() == ranges_length.count()); // sanity check for the test data
|
Q_ASSERT(ranges_start.count() == ranges_length.count()); // sanity check for the test data
|
||||||
Q_ASSERT(ranges_start.count() == ranges_mangler.count()); // sanity check for the test data
|
Q_ASSERT(ranges_start.count() == ranges_mangler.count()); // sanity check for the test data
|
||||||
|
|
||||||
Snippet::ParsedSnippet result = Snippet::parse(input);
|
ParsedSnippet result = Snippet::parse(input);
|
||||||
|
|
||||||
QCOMPARE(result.text, text);
|
QCOMPARE(result.text, text);
|
||||||
QCOMPARE(result.success, success);
|
QCOMPARE(result.success, success);
|
||||||
|
|||||||
@@ -44,6 +44,21 @@ public:
|
|||||||
virtual QString mangle(const QString &unmangled) const = 0;
|
virtual QString mangle(const QString &unmangled) const = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class TEXTEDITOR_EXPORT ParsedSnippet
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
QString text;
|
||||||
|
QString errorMessage;
|
||||||
|
bool success;
|
||||||
|
struct Range {
|
||||||
|
Range(int s, int l, NameMangler *m) : start(s), length(l), mangler(m) { }
|
||||||
|
int start;
|
||||||
|
int length;
|
||||||
|
NameMangler *mangler;
|
||||||
|
};
|
||||||
|
QList<Range> ranges;
|
||||||
|
};
|
||||||
|
|
||||||
class TEXTEDITOR_EXPORT Snippet
|
class TEXTEDITOR_EXPORT Snippet
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -76,20 +91,6 @@ public:
|
|||||||
static const QChar kVariableDelimiter;
|
static const QChar kVariableDelimiter;
|
||||||
static const QChar kEscapeChar;
|
static const QChar kEscapeChar;
|
||||||
|
|
||||||
class ParsedSnippet {
|
|
||||||
public:
|
|
||||||
QString text;
|
|
||||||
QString errorMessage;
|
|
||||||
bool success;
|
|
||||||
struct Range {
|
|
||||||
Range(int s, int l, NameMangler *m) : start(s), length(l), mangler(m) { }
|
|
||||||
int start;
|
|
||||||
int length;
|
|
||||||
NameMangler *mangler;
|
|
||||||
};
|
|
||||||
QList<Range> ranges;
|
|
||||||
};
|
|
||||||
|
|
||||||
static ParsedSnippet parse(const QString &snippet);
|
static ParsedSnippet parse(const QString &snippet);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -2700,7 +2700,7 @@ void TextEditorWidget::keyPressEvent(QKeyEvent *e)
|
|||||||
|
|
||||||
void TextEditorWidget::insertCodeSnippet(const QTextCursor &cursor_arg, const QString &snippet)
|
void TextEditorWidget::insertCodeSnippet(const QTextCursor &cursor_arg, const QString &snippet)
|
||||||
{
|
{
|
||||||
Snippet::ParsedSnippet data = Snippet::parse(snippet);
|
ParsedSnippet data = Snippet::parse(snippet);
|
||||||
|
|
||||||
if (!data.success) {
|
if (!data.success) {
|
||||||
QString message = QString::fromLatin1("Cannot parse snippet \"%1\".").arg(snippet);
|
QString message = QString::fromLatin1("Cannot parse snippet \"%1\".").arg(snippet);
|
||||||
|
|||||||
Reference in New Issue
Block a user