mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
add HTML entity highlighter
This commit is contained in:
parent
074bdd3330
commit
cd888703b8
@ -183,7 +183,7 @@ if __name__ == '__main__':
|
|||||||
w.setWindowFlag(Qt.WindowType.Dialog)
|
w.setWindowFlag(Qt.WindowType.Dialog)
|
||||||
w.show()
|
w.show()
|
||||||
w.markdown = '''\
|
w.markdown = '''\
|
||||||
test *italic* **bold** ***bold-italic*** `code` [link](https://calibre-ebook.com) <span style="font-weight: bold; color:red">span</span>
|
normal& *italic&* **bold&** ***bold-italic*** `code` [link](https://calibre-ebook.com) <span style="font-weight: bold; color:red">span</span>
|
||||||
|
|
||||||
> Blockquotes
|
> Blockquotes
|
||||||
|
|
||||||
|
@ -32,7 +32,8 @@ class MarkdownHighlighter(QSyntaxHighlighter):
|
|||||||
'CodeSpan': re.compile(r'(?<!\\)(?P<delim>`+).+?(?P=delim)'),
|
'CodeSpan': re.compile(r'(?<!\\)(?P<delim>`+).+?(?P=delim)'),
|
||||||
'HeaderLine': re.compile(r'(?u)^(-|=)+\s*$'),
|
'HeaderLine': re.compile(r'(?u)^(-|=)+\s*$'),
|
||||||
'HR': re.compile(r'(?u)^(\s*(\*|-|_)\s*){3,}$'),
|
'HR': re.compile(r'(?u)^(\s*(\*|-|_)\s*){3,}$'),
|
||||||
'Html': re.compile(r'(?u)</?[^/\s].*?(?<!\\)>')
|
'Html': re.compile(r'(?u)</?[^/\s].*?(?<!\\)>'),
|
||||||
|
'Entity': re.compile(r'&([A-z]{2,7}|#\d{1,7}|#x[\dA-Fa-f]{1,6});'),
|
||||||
}
|
}
|
||||||
|
|
||||||
key_theme_maps = {
|
key_theme_maps = {
|
||||||
@ -55,6 +56,7 @@ class MarkdownHighlighter(QSyntaxHighlighter):
|
|||||||
'CodeSpan': "codespan",
|
'CodeSpan': "codespan",
|
||||||
'HR': "line",
|
'HR': "line",
|
||||||
'Html': "html",
|
'Html': "html",
|
||||||
|
'Entity': "entity",
|
||||||
}
|
}
|
||||||
|
|
||||||
light_theme = {
|
light_theme = {
|
||||||
@ -70,7 +72,8 @@ class MarkdownHighlighter(QSyntaxHighlighter):
|
|||||||
"codespan": {"color":"#ff5800", "font-weight":"normal", "font-style":"normal"},
|
"codespan": {"color":"#ff5800", "font-weight":"normal", "font-style":"normal"},
|
||||||
"codeblock": {"color":"#ff5800", "font-weight":"normal", "font-style":"normal"},
|
"codeblock": {"color":"#ff5800", "font-weight":"normal", "font-style":"normal"},
|
||||||
"line": {"color":"#2aa198", "font-weight":"normal", "font-style":"normal"},
|
"line": {"color":"#2aa198", "font-weight":"normal", "font-style":"normal"},
|
||||||
"html": {"color":"#c000c0", "font-weight":"normal", "font-style":"normal"}
|
"html": {"color":"#c000c0", "font-weight":"normal", "font-style":"normal"},
|
||||||
|
"entity": {"color":"#006496", "font-weight":"normal", "font-style":"normal"},
|
||||||
}
|
}
|
||||||
|
|
||||||
dark_theme = {
|
dark_theme = {
|
||||||
@ -86,7 +89,8 @@ class MarkdownHighlighter(QSyntaxHighlighter):
|
|||||||
"codespan": {"color":"#90ee90", "font-weight":"normal", "font-style":"normal"},
|
"codespan": {"color":"#90ee90", "font-weight":"normal", "font-style":"normal"},
|
||||||
"codeblock": {"color":"#ff9900", "font-weight":"normal", "font-style":"normal"},
|
"codeblock": {"color":"#ff9900", "font-weight":"normal", "font-style":"normal"},
|
||||||
"line": {"color":"#2aa198", "font-weight":"normal", "font-style":"normal"},
|
"line": {"color":"#2aa198", "font-weight":"normal", "font-style":"normal"},
|
||||||
"html": {"color":"#F653A6", "font-weight":"normal", "font-style":"normal"}
|
"html": {"color":"#f653a6", "font-weight":"normal", "font-style":"normal"},
|
||||||
|
"entity": {"color":"#ff82ac", "font-weight":"normal", "font-style":"normal"},
|
||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
@ -141,6 +145,8 @@ class MarkdownHighlighter(QSyntaxHighlighter):
|
|||||||
|
|
||||||
self.highlightImage(text, cursor, bf)
|
self.highlightImage(text, cursor, bf)
|
||||||
|
|
||||||
|
self.highlightEntity(text, cursor, bf)
|
||||||
|
|
||||||
self.highlightCodeSpan(text, cursor, bf)
|
self.highlightCodeSpan(text, cursor, bf)
|
||||||
|
|
||||||
self.highlightCodeBlock(text, cursor, bf)
|
self.highlightCodeBlock(text, cursor, bf)
|
||||||
@ -295,6 +301,13 @@ class MarkdownHighlighter(QSyntaxHighlighter):
|
|||||||
found = True
|
found = True
|
||||||
return found
|
return found
|
||||||
|
|
||||||
|
def highlightEntity(self, text, cursor, bf):
|
||||||
|
found = False
|
||||||
|
for mo in re.finditer(self.MARKDOWN_KEYS_REGEX['Entity'],text):
|
||||||
|
self.setFormat(self.offset+ mo.start(), mo.end() - mo.start(), self.MARKDOWN_KWS_FORMAT['Entity'])
|
||||||
|
found = True
|
||||||
|
return found
|
||||||
|
|
||||||
def highlightHtml(self, text):
|
def highlightHtml(self, text):
|
||||||
for mo in re.finditer(self.MARKDOWN_KEYS_REGEX['Html'], text):
|
for mo in re.finditer(self.MARKDOWN_KEYS_REGEX['Html'], text):
|
||||||
self.setFormat(mo.start(), mo.end() - mo.start(), self.MARKDOWN_KWS_FORMAT['Html'])
|
self.setFormat(mo.start(), mo.end() - mo.start(), self.MARKDOWN_KWS_FORMAT['Html'])
|
||||||
|
Loading…
x
Reference in New Issue
Block a user