mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-05-17 11:22:28 +12:00
Adds #233: highlighter for CriticMarkup
This commit is contained in:
parent
d27ce4dec6
commit
6193dfe8f5
|
@ -1,6 +1,6 @@
|
|||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
|
||||
#==============================================================================
|
||||
# MARKDOWN STATES
|
||||
#==============================================================================
|
||||
|
@ -36,10 +36,10 @@ class MarkdownState:
|
|||
#==============================================================================
|
||||
# MARKDOWN TOKEN TYPE
|
||||
#==============================================================================
|
||||
|
||||
|
||||
class MarkdownTokenType:
|
||||
TokenUnknown = -1
|
||||
|
||||
|
||||
# Titles
|
||||
TokenAtxHeading1 = 0
|
||||
TokenAtxHeading2 = 1
|
||||
|
@ -51,7 +51,7 @@ class MarkdownTokenType:
|
|||
TokenSetextHeading1Line2 = 7
|
||||
TokenSetextHeading2Line1 = 8
|
||||
TokenSetextHeading2Line2 = 9
|
||||
|
||||
|
||||
TokenEmphasis = 10
|
||||
TokenStrong = 11
|
||||
TokenStrikethrough = 12
|
||||
|
@ -79,15 +79,21 @@ 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,
|
||||
TokenSetextHeading1Line1, TokenSetextHeading1Line2,
|
||||
TokenSetextHeading2Line1, TokenSetextHeading2Line2]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class BlockquoteStyle:
|
||||
BlockquoteStylePlain = 0
|
||||
BlockquoteStyleItalic = 1
|
||||
|
|
|
@ -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
|
||||
|
||||
###########################################################################
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in a new issue