Adds #233: highlighter for CriticMarkup

This commit is contained in:
Olivier Keshavjee 2017-11-26 21:23:34 +01:00
parent d27ce4dec6
commit 6193dfe8f5
3 changed files with 59 additions and 13 deletions

View file

@ -79,7 +79,13 @@ class MarkdownTokenType:
TokenTablePipe = 34
TokenSuperScript = 35
TokenSubScript = 36
TokenLast = 37
# CriticMarkup
TokenCMAddition = 37 # {++ ++}
TokenCMDeletion = 38 # {-- --}
TokenCMSubstitution = 39 #{~~ ~> ~~}
TokenCMComment = 40 # {>> <<}
TokenCMHighlight = 41 # {== ==}{>> <<}
TokenLast = 42
TITLES = [TokenAtxHeading1, TokenAtxHeading2, TokenAtxHeading3,
TokenAtxHeading4, TokenAtxHeading5, TokenAtxHeading6,

View file

@ -329,6 +329,31 @@ class MarkdownHighlighter(BasicHighlighter):
theme[MTT.TokenTablePipe] = {
"color": markup, "monospace":True}
# CriticMarkup
theme[MTT.TokenCMAddition] = {
"color": QColor("#00bb00"),
"markupColor": QColor(F.mixColors("#00bb00", background, .4)),
"markupMonospace": True,}
theme[MTT.TokenCMDeletion] = {
"color": QColor("#dd0000"),
"markupColor": QColor(F.mixColors("#dd0000", background, .4)),
"markupMonospace": True,
"strike": True}
theme[MTT.TokenCMSubstitution] = {
"color": QColor("#ff8600"),
"markupColor": QColor(F.mixColors("#ff8600", background, .4)),
"markupMonospace": True,}
theme[MTT.TokenCMComment] = {
"color": QColor("#0000bb"),
"markupColor": QColor(F.mixColors("#0000bb", background, .4)),
"markupMonospace": True,}
theme[MTT.TokenCMHighlight] = {
"color": QColor("#aa53a9"),
"background": QColor(F.mixColors("#aa53a9", background, .1)),
"markupBackground": QColor(F.mixColors("#aa53a9", background, .1)),
"markupColor": QColor(F.mixColors("#aa53a9", background, .5)),
"markupMonospace": True,}
return theme
###########################################################################

View file

@ -112,6 +112,16 @@ class MarkdownTokenizer(HighlightTokenizer):
htmlInlineCommentRegex.setMinimal(True)
mentionRegex = QRegExp("\\B@\\w+(\\-\\w+)*(/\\w+(\\-\\w+)*)?")
pipeTableDividerRegex = QRegExp("^ {0,3}(\\|[ :]?)?-{3,}([ :]?\\|[ :]?-{3,}([ :]?\\|)?)+\\s*$")
CMAdditionRegex = QRegExp("(\\{\\+\\+.*\\+\\+\\})")
CMAdditionRegex.setMinimal(True)
CMDeletionRegex = QRegExp("(\\{--.*--\\})")
CMDeletionRegex.setMinimal(True)
CMSubstitutionRegex = QRegExp("(\\{~~.*~>.*~~\\})")
CMSubstitutionRegex.setMinimal(True)
CMCommentRegex = QRegExp("(\\{>>.*<<\\})")
CMCommentRegex.setMinimal(True)
CMHighlightRegex = QRegExp("(\\{==.*==\\})")
CMHighlightRegex.setMinimal(True)
def __init__(self):
HighlightTokenizer.__init__(self)
@ -601,13 +611,18 @@ class MarkdownTokenizer(HighlightTokenizer):
escapedText = self.tokenizeMatches(MTT.TokenReferenceLink, escapedText, self.referenceLinkRegex, 0, 0, False, True)
escapedText = self.tokenizeMatches(MTT.TokenHtmlEntity, escapedText, self.htmlEntityRegex)
escapedText = self.tokenizeMatches(MTT.TokenAutomaticLink, escapedText, self.automaticLinkRegex, 0, 0, False, True)
escapedText = self.tokenizeMatches(MTT.TokenStrikethrough, escapedText, self.strikethroughRegex, 2, 2, True)
escapedText = self.tokenizeMatches(MTT.TokenStrong, escapedText, self.strongRegex, 2, 2, True)
escapedText = self.tokenizeMatches(MTT.TokenEmphasis, escapedText, self.emphasisRegex, 1, 1, True)
escapedText = self.tokenizeMatches(MTT.TokenSuperScript, escapedText, self.superScriptRegex, 1, 1, True)
escapedText = self.tokenizeMatches(MTT.TokenSubScript, escapedText, self.subScriptRegex, 1, 1, True)
escapedText = self.tokenizeMatches(MTT.TokenHtmlTag, escapedText, self.htmlTagRegex)
escapedText = self.tokenizeMatches(MTT.TokenMention, escapedText, self.mentionRegex, 0, 0, False, True)
escapedText = self.tokenizeMatches(MTT.TokenCMAddition, escapedText, self.CMAdditionRegex, 3, 3, True)
escapedText = self.tokenizeMatches(MTT.TokenCMDeletion, escapedText, self.CMDeletionRegex, 3, 3, True)
escapedText = self.tokenizeMatches(MTT.TokenCMSubstitution, escapedText, self.CMSubstitutionRegex, 3, 3, True)
escapedText = self.tokenizeMatches(MTT.TokenCMComment, escapedText, self.CMCommentRegex, 3, 3, True)
escapedText = self.tokenizeMatches(MTT.TokenCMHighlight, escapedText, self.CMHighlightRegex, 3, 3, True)
escapedText = self.tokenizeMatches(MTT.TokenStrikethrough, escapedText, self.strikethroughRegex, 2, 2, True)
escapedText = self.tokenizeMatches(MTT.TokenHtmlTag, escapedText, self.htmlTagRegex)
escapedText = self.tokenizeMatches(MTT.TokenSubScript, escapedText, self.subScriptRegex, 1, 1, True)
escapedText = self.tokenizeMatches(MTT.TokenSuperScript, escapedText, self.superScriptRegex, 1, 1, True)
return True