Skip to content

MarkdownHighlighter

Qt Base Class: QSyntaxHighlighter

Signature: QSyntaxHighlighter(self, parent: PySide6.QtCore.QObject) -> None QSyntaxHighlighter(self, parent: PySide6.QtGui.QTextDocument) -> None

Base classes

Name Children Inherits
BaseRuleSyntaxHighlighter
prettyqt.syntaxhighlighters.baserulesyntaxhighlighter

⋔ Inheritance diagram

graph TD
  1473296260768["syntaxhighlighters.MarkdownHighlighter"]
  1473296248080["syntaxhighlighters.BaseRuleSyntaxHighlighter"]
  1473245668528["gui.SyntaxHighlighter"]
  1473245664624["gui.SyntaxHighlighterMixin"]
  1473299815024["core.ObjectMixin"]
  140713234304496["builtins.object"]
  1473289231040["QtGui.QSyntaxHighlighter"]
  1473288842240["QtCore.QObject"]
  1473291690208["Shiboken.Object"]
  1473296248080 --> 1473296260768
  1473245668528 --> 1473296248080
  1473245664624 --> 1473245668528
  1473299815024 --> 1473245664624
  140713234304496 --> 1473299815024
  1473289231040 --> 1473245668528
  1473288842240 --> 1473289231040
  1473291690208 --> 1473288842240
  140713234304496 --> 1473291690208

🛈 DocStrings

Bases: BaseRuleSyntaxHighlighter

Source code in prettyqt\syntaxhighlighters\markdownhighlighter.py
class MarkdownHighlighter(syntaxhighlighters.BaseRuleSyntaxHighlighter):
    RULES = Rule.__subclasses__()

    def highlightBlock(self, text: str):
        super().highlightBlock(text)
        self.setCurrentBlockState(0)
        self._match_multiline(text, *TRI_SINGLE)

    def _match_multiline(
        self, text: str, delimiter: core.RegularExpression, style: gui.TextCharFormat
    ):
        # If inside triple-single quotes, start at 0
        if self.previousBlockState() == 1:
            start = 0
            add = 0
        # Otherwise, look for the delimiter on this line
        else:
            match = delimiter.match(text)
            if not match.hasMatch():
                return
            start = match.capturedStart()
            add = match.capturedLength()

        # As long as there's a delimiter match on this line...
        while start >= 0:
            # Look for the ending delimiter
            match = delimiter.match(text, start + add)
            end = match.capturedStart()
            # Ending delimiter on this line?
            if end >= add:
                length = end + match.capturedLength()
                self.setCurrentBlockState(0)
            # No; multi-line string
            else:
                self.setCurrentBlockState(1)
                length = len(text)
            self.setFormat(start, length - start + add, style)
            # Look for the next match
            start = delimiter.match(text, start + length).capturedStart()

⌗ Property table

Qt Property Type Doc
objectName QString