Пример #1
0
    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)))
Пример #3
0
 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))
Пример #4
0
 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
Пример #5
0
 def regMarker(self, flags=0):
     return re.compile(util.escapeRegExp(self.marker), flags)
Пример #6
0
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)