示例#1
0
    def variationFromString(self, string, caseSense=True):
        rx = QRegExp(self.variationRegExpPattern)
        rx.setMinimal(False)
        rx.setCaseSensitivity(Qt.CaseInsensitive)
        if caseSense: rx.setCaseSensitivity(Qt.CaseSensitive)

        index = rx.indexIn(string)
        length = rx.matchedLength()

        match = string[index:index + length]

        return match
示例#2
0
    def __init__(self, parent=None):
        super(PythonSyntax, self).__init__(parent)
        
        # common statement words
        self.keywordF.setForeground(self.TM_GET("keyword"))
        self.keywordF.setFontWeight(QFont.Bold)
        keyword_list  = (r"False|class|finally|is|return", 
                        r"None|continue|for|lambda|try",
                        r"True|def|from|nonlocal|while",
                        r"and|del|global|not|with|as",
                        r"elif|if|or|yield|assert|else",
                        r"import|pass|break|except|in|raise")

        for word in keyword_list:
            pattern = QRegExp("\\b" + word +"\\b")
            rule = HighlightingRule(pattern, self.keywordF)
            self.highlighting_rules.append(rule)

        # special methods
        self.keyword_reservedF.setForeground(self.TM_GET("keyword_reserved"))
        self.keyword_reservedF.setFontWeight(QFont.Bold)
        keywords_reserved = (r"__\w*__ | _\w* | __\w*",)

        for method in keywords_reserved:
            pattern = QRegExp("\\b" + method +"\\b")
            rule = HighlightingRule(pattern, self.keyword_reservedF)
            self.highlighting_rules.append(rule)

        # number
        self.numberF.setForeground(self.TM_GET("number"))
        pattern = QRegExp("[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?")

        pattern.setMinimal(True)
        rule = HighlightingRule(pattern, self.numberF)
        self.highlighting_rules.append(rule)

        #number long
        self.number_longF.setForeground(self.TM_GET("number_long"))
        pattern = QRegExp(r"\d+L")
        rule = HighlightingRule(pattern, self.number_longF)
        self.highlighting_rules.append(rule)

        # builtin functions
        self.keyword_builtinF.setForeground(self.TM_GET("keyword_builtin"))
        keywords_builtin_list = (r"abs|divmod|input|open|staticmethod|all",
                                 r"enumerate|int|ord",  
                                 r"str|any|eval|isinstance|pow|sum", 
                                 r"basestring|execfile|issubclass|print", 
                                 r"super|bin|file|iter|property", 
                                 r"tuple|bool|filter|len|range|type", 
                                 r"bytearray|float|list|raw_input|unichr",
                                 r"callable|format|locals|reduce|unicode",
                                 r"chr|frozenset|long|reload|vars",
                                 r"classmethod|getattr|map|repr|xrange",
                                 r"cmp|globals|max|reversed|zip",
                                 r"compile|hasattr|memoryview|round", 
                                 r"complex|hash|min|set", 
                                 r"apply|delattr|help|next|setattr", 
                                 r"buffer|dict|hex|object|slice|coerce",
                                 r"dir|id|oct|sorted|intern",)
        
        # this (?<!\.) belongs in the following list
        keywords_exceptions_list = (r"ArithmeticError|AssertionError|AttributeError|"
                                    r"BaseException|DeprecationWarning|EOFError|EnvironmentError|"
                                    r"Exception|FloatingPointError|FutureWarning|GeneratorExit|IOError|"
                                    r"ImportError|ImportWarning|IndentationError|IndexError|KeyError|"
                                    r"KeyboardInterrupt|LookupError|MemoryError|NameError|"
                                    r"NotImplemented|NotImplementedError|OSError|OverflowError|"
                                    r"OverflowWarning|PendingDeprecationWarning|ReferenceError|"
                                    r"RuntimeError|RuntimeWarning|StandardError|StopIteration|"
                                    r"SyntaxError|SyntaxWarning|SystemError|SystemExit|TabError|"
                                    r"TypeError|UnboundLocalError|UnicodeDecodeError|"
                                    r"UnicodeEncodeError|UnicodeError|UnicodeTranslateError|"
                                    r"UnicodeWarning|UserWarning|ValueError|VMSError|Warning|"
                                    r"WindowsError|ZeroDivisionError",)
        
        for word in keywords_builtin_list:
            pattern = QRegExp(r"\b"+word+"(?=[(])+")
            rule = HighlightingRule(pattern, self.keyword_builtinF)
            self.highlighting_rules.append(rule)

        for word in keywords_exceptions_list:
            pattern = QRegExp("\b"+word+"\\b")
            rule = HighlightingRule(pattern, self.keyword_builtinF)
            self.highlighting_rules.append(rule)

        # names
        self.name_builtinF.setForeground(self.TM_GET("name_builtin"))
        name_pattern_list = ["(def)((\s)+)(?:.*)(?=[(])",
                             "(class)((\s)+)(?:.*)(?=[(])",
                             ]
        for word in name_pattern_list:
            pattern = QRegExp(word)
            rule = HighlightingRule(pattern, self.name_builtinF)
            self.highlighting_rules.append(rule)

        # function keywords
        self.keyword_functionF.setForeground(self.TM_GET("keyword_function"))
        keywords_functions = (r"class|def",)

        for word in keywords_functions:
            pattern = QRegExp("\\b"+ word +"\\b")
            rule = HighlightingRule(pattern, self.keyword_functionF)
            self.highlighting_rules.append(rule)

        # decorator's
        self.name_decoratorF.setForeground(self.TM_GET("name_decorator"))
        pattern = (r"@[A-z0-9_.]+")
        rule = HighlightingRule(pattern, self.name_decoratorF)
        self.highlighting_rules.append(rule)

        # string
        self.string_doubleF.setForeground(self.TM_GET("string_double"))
        pattern = QRegExp("[rR]?[uU]?\".*\"")
        rule = HighlightingRule(pattern, self.string_doubleF)
        self.highlighting_rules.append(rule)

        # single-quote string
        self.string_singleF.setForeground(self.TM_GET("string_single"))
        pattern = QRegExp( "[rR]?[uU]?\'.*\'")
        rule = HighlightingRule(pattern, self.string_singleF)
        self.highlighting_rules.append(rule)
        
        # multi-line comment
        self.string_docF.setForeground(self.TM_GET("string_doc"))
        pattern = QRegExp(r'^(\s*)("""(?:.|\n)*?""")',)
        rule = HighlightingRule(pattern, self.string_docF)
        self.highlighting_rules.append(rule)

        # multi-line single quote
        self.string_docF.setForeground(self.TM_GET("string_doc"))
        pattern = QRegExp(r"^(\s*)('''(?:.|\n)*?''')",)
        rule = HighlightingRule(pattern, self.string_docF)
        self.highlighting_rules.append(rule)

        # comments
        self.commentF.setForeground(self.TM_GET("comment"))
        pattern = QRegExp("#.*$")
        rule = HighlightingRule(pattern, self.commentF)
        self.highlighting_rules.append(rule)