Added text command for spoilers.
This commit is contained in:
parent
1819e6e3a5
commit
6b905f7754
2 changed files with 38 additions and 0 deletions
|
|
@ -195,6 +195,18 @@ QString textcmdStopSemibold() {
|
||||||
return result.append(TextCommand).append(QChar(TextCommandNoSemibold)).append(TextCommand);
|
return result.append(TextCommand).append(QChar(TextCommandNoSemibold)).append(TextCommand);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString textcmdStartSpoiler() {
|
||||||
|
QString result;
|
||||||
|
result.reserve(3);
|
||||||
|
return result.append(TextCommand).append(QChar(TextCommandSpoiler)).append(TextCommand);
|
||||||
|
}
|
||||||
|
|
||||||
|
QString textcmdStopSpoiler() {
|
||||||
|
QString result;
|
||||||
|
result.reserve(3);
|
||||||
|
return result.append(TextCommand).append(QChar(TextCommandNoSpoiler)).append(TextCommand);
|
||||||
|
}
|
||||||
|
|
||||||
const QChar *textSkipCommand(const QChar *from, const QChar *end, bool canLink) {
|
const QChar *textSkipCommand(const QChar *from, const QChar *end, bool canLink) {
|
||||||
const QChar *result = from + 1;
|
const QChar *result = from + 1;
|
||||||
if (*from != TextCommand || result >= end) return from;
|
if (*from != TextCommand || result >= end) return from;
|
||||||
|
|
@ -212,6 +224,8 @@ const QChar *textSkipCommand(const QChar *from, const QChar *end, bool canLink)
|
||||||
case TextCommandNoItalic:
|
case TextCommandNoItalic:
|
||||||
case TextCommandUnderline:
|
case TextCommandUnderline:
|
||||||
case TextCommandNoUnderline:
|
case TextCommandNoUnderline:
|
||||||
|
case TextCommandSpoiler:
|
||||||
|
case TextCommandNoSpoiler:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TextCommandLinkIndex:
|
case TextCommandLinkIndex:
|
||||||
|
|
@ -803,6 +817,24 @@ bool Parser::readCommand() {
|
||||||
_lnkIndex = kStringLinkIndexShift + _links.size();
|
_lnkIndex = kStringLinkIndexShift + _links.size();
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
|
case TextCommandSpoiler: {
|
||||||
|
if (!_spoilerIndex) {
|
||||||
|
createBlock();
|
||||||
|
_spoilers.push_back(EntityLinkData{
|
||||||
|
.data = QString::number(_spoilers.size() + 1),
|
||||||
|
.type = EntityType::Spoiler,
|
||||||
|
});
|
||||||
|
_spoilerIndex = _spoilers.size();
|
||||||
|
}
|
||||||
|
} break;
|
||||||
|
|
||||||
|
case TextCommandNoSpoiler:
|
||||||
|
if (_spoilerIndex == _spoilers.size()) {
|
||||||
|
createBlock();
|
||||||
|
_spoilerIndex = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case TextCommandSkipBlock:
|
case TextCommandSkipBlock:
|
||||||
createSkipBlock(_ptr->unicode(), (_ptr + 1)->unicode());
|
createSkipBlock(_ptr->unicode(), (_ptr + 1)->unicode());
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,8 @@ enum TextCommands {
|
||||||
TextCommandLinkIndex = 0x0B, // 0 - NoLink
|
TextCommandLinkIndex = 0x0B, // 0 - NoLink
|
||||||
TextCommandLinkText = 0x0C,
|
TextCommandLinkText = 0x0C,
|
||||||
TextCommandSkipBlock = 0x0D,
|
TextCommandSkipBlock = 0x0D,
|
||||||
|
TextCommandSpoiler = 0x0E,
|
||||||
|
TextCommandNoSpoiler = 0x0F,
|
||||||
|
|
||||||
TextCommandLangTag = 0x20,
|
TextCommandLangTag = 0x20,
|
||||||
};
|
};
|
||||||
|
|
@ -269,4 +271,8 @@ QString textcmdLink(ushort lnkIndex, const QString &text);
|
||||||
QString textcmdLink(const QString &url, const QString &text);
|
QString textcmdLink(const QString &url, const QString &text);
|
||||||
QString textcmdStartSemibold();
|
QString textcmdStartSemibold();
|
||||||
QString textcmdStopSemibold();
|
QString textcmdStopSemibold();
|
||||||
|
|
||||||
|
QString textcmdStartSpoiler();
|
||||||
|
QString textcmdStopSpoiler();
|
||||||
|
|
||||||
const QChar *textSkipCommand(const QChar *from, const QChar *end, bool canLink = true);
|
const QChar *textSkipCommand(const QChar *from, const QChar *end, bool canLink = true);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue