Exemple #1
0
    def regex_findall(self, find, flags, replace, extractions, literal=False, sel=None):
        """Findall with regex."""

        regions = []
        offset = 0
        if sel is not None:
            offset = sel.begin()
            bfr = self.view.substr(sublime.Region(offset, sel.end()))
        else:
            bfr = self.view.substr(sublime.Region(0, self.view.size()))
        flags |= re.MULTILINE
        if literal:
            find = re.escape(find)
        if self.extend and not literal:
            pattern = bre.compile_search(find, flags)
            self.template = bre.compile_replace(pattern, replace)
        else:
            pattern = re.compile(find, flags)
        for m in pattern.finditer(bfr):
            regions.append(sublime.Region(offset + m.start(0), offset + m.end(0)))
            if self.plugin is not None:
                extractions.append(self.on_replace(m))
            else:
                extractions.append(self.expand(m, replace))
        return regions
Exemple #2
0
    def apply_scope_regex(self, string, re_find, replace, greedy_replace, multi):
        """Apply regex on a scope."""

        replaced = 0
        extraction = string

        scope_repl = ScopeRepl(self.plugin, replace, self.expand, self.on_replace)
        if self.extend:
            pattern = bre.compile_search(re_find)
            self.template = bre.compile_replace(pattern, replace)
        else:
            pattern = re.compile(re_find)
        if multi and not self.find_only and self.action is None:
            extraction, replaced = self.apply_multi_pass_scope_regex(
                pattern, extraction, scope_repl.repl, greedy_replace
            )
        else:
            if greedy_replace:
                extraction, replaced = pattern.subn(scope_repl.repl, string)
            else:
                extraction, replaced = pattern.subn(scope_repl.repl, string, 1)
        return extraction, replaced