def getBoxForPos(self, pos): depth = self.getNestedLvl(pos.start) if depth > 0: left = self.left() curLeft = util.repeat(left, depth - 1) clone = self.clone() placeholder = "###PlaceHolder###" clone.width = len(placeholder) clone.openText = clone.closeText = self.deco + self.deco + placeholder + self.deco + self.deco escPlaceholder = util.escapeRegExp("###PlaceHolder###") startFind = re.compile( util.escapeRegExp(curLeft + clone.startSep()).replace( escPlaceholder, '.*')) endFind = re.compile( util.escapeRegExp(curLeft + clone.endSep()).replace( escPlaceholder, '.*')) pair = util.Pair(startFind, endFind, {'validMatch': self.validPairMatch}) res = pair.wrapperPos(pos, self.context.codewave.editor.text) if res is not None: res.start += len(curLeft) return res
def _removeCommentFromContent(self): if self.content: ecl = util.escapeRegExp(self.context.wrapCommentLeft()) ecr = util.escapeRegExp(self.context.wrapCommentRight()) ed = util.escapeRegExp(self.codewave.deco) re1 = re.compile("^\\s*"+ecl+"(?:"+ed+")+\\s*(.*?)\\s*(?:"+ed+")+"+ecr+"$", re.M) re2 = re.compile("^\\s*(?:"+ed+")*"+ecr+"\r?\n") re3 = re.compile("\n\\s*"+ecl+"(?:"+ed+")*\\s*$") self.content = re.sub(re3,'',re.sub(re2,'',re.sub(re1,r'\1',self.content)))
def removeComment(self, text, options={}): if text is not None: defaults = {'multiline': True} opt = util.merge(defaults, options) ecl = util.escapeRegExp(self.context.wrapCommentLeft()) ecr = util.escapeRegExp(self.context.wrapCommentRight()) ed = util.escapeRegExp(self.deco) flag = re.M if opt['multiline'] else 0 re1 = re.compile( "^\\s*" + ecl + "(?:" + ed + ")*\\s{0," + str(self.pad) + "}", flag) re2 = re.compile("\\s*(?:" + ed + ")*" + ecr + "\\s*$", flag) return re.sub(re2, '', re.sub(re1, '', text))
def getOptFromLine(self, line, getPad=True): rStart = re.compile( "(\\s*)(" + util.escapeRegExp(self.context.wrapCommentLeft(self.deco)) + ")(\\s*)") rEnd = re.compile( "(\\s*)(" + util.escapeRegExp(self.context.wrapCommentRight(self.deco)) + ")(\n|$)") resStart = rStart.search(line) resEnd = rEnd.search(line) if resStart is not None and resEnd is not None: if getPad: self.pad = min(len(resStart.group(3)), len(resEnd.group(1))) self.indent = len(resStart.group(1)) startPos = resStart.end(2) + self.pad endPos = resEnd.start(2) - self.pad self.width = endPos - startPos return self
def regMarker(self, flags=0): return re.compile(util.escapeRegExp(self.marker), flags)
def no_execute(instance): reg = re.compile("^("+util.escapeRegExp(instance.codewave.brakets) + ')' + util.escapeRegExp(instance.codewave.noExecuteChar)) return re.sub(reg, r'\1', instance.str)