def removecomments(self): newrawcontents = list() i = 0 multi_indent = replpython.getpythonindent_multiline(self.rawcontents) while i < len(self.rawcontents): if i == 0: indentlevel, finishflag, unfinishtype = (0, False, -1) else: indentlevel, finishflag, unfinishtype = multi_indent[i - 1] if unfinishtype in { UnfinishType.DOUBLEQUOTE, UnfinishType.SINGLEQUOTE, UnfinishType.LONGSTRING, UnfinishType.COMMENT, UnfinishType.RAWCOMMENT, UnfinishType.RAWLONGSTRING }: newrawcontents.append(self.rawcontents[i]) i += 1 continue if self.rawcontents[i].strip().startswith("#"): i += 1 continue if finishflag and self.rawcontents[i].strip().startswith( THREE_DOUBLEQUOTE): for j in range(i, len(self.rawcontents)): j_indentlevel, j_finishflag, j_unfinishtype = replpython.getpythonindent( self.rawcontents[i:j + 1]) if j_finishflag == True: break i = j + 1 continue newrawcontents.append(self.tructcomments(self.rawcontents[i])) i += 1 self.rawcontents = newrawcontents
def mergeunfinishline(self): tempcodeindent = replpython.getpythonindent_multiline(self.rawcontents) newrawcontents = list() i = 0 while i < len(self.rawcontents): tempcodeline = "" j = i while j < len(self.rawcontents): tobeadded = self.rawcontents[j] Flag_NeedMerge = not tempcodeindent[j][1] if j != i and tempcodeindent[j - 1][2] not in { UnfinishType.DOUBLEQUOTE, UnfinishType.SINGLEQUOTE, UnfinishType.LONGSTRING, UnfinishType.COMMENT, UnfinishType.RAWLONGSTRING }: tobeadded = tobeadded.lstrip() if tempcodeindent[j][2] not in { UnfinishType.LONGSTRING, UnfinishType.COMMENT, UnfinishType.RAWCOMMENT, UnfinishType.RAWLONGSTRING }: tobeadded = tobeadded.rstrip() if tempcodeindent[j][2] in { UnfinishType.LONGSTRING, UnfinishType.COMMENT }: tobeadded = tobeadded + "\\n" Flag_NeedMerge = True if tempcodeindent[j][2] in {UnfinishType.RAWCOMMENT}: tobeadded = tobeadded + THREE_DOUBLEQUOTE + ' "\\n" ' + THREE_DOUBLEQUOTE Flag_NeedMerge = True if tempcodeindent[j][2] in {UnfinishType.RAWLONGSTRING}: tobeadded = tobeadded + THREE_SINGLEQUOTE + ' "\\n" ' + THREE_SINGLEQUOTE Flag_NeedMerge = True if tempcodeindent[j][2] not in { UnfinishType.LONGSTRING, UnfinishType.COMMENT, UnfinishType.RAWCOMMENT, UnfinishType.RAWLONGSTRING } and self.rawcontents[j][-1] == "\\": if tempcodeindent[j][2] not in { UnfinishType.DOUBLEQUOTE, UnfinishType.SINGLEQUOTE }: tobeadded = tobeadded[:-1] + " " else: tobeadded = tobeadded[:-1] Flag_NeedMerge = True tempcodeline += tobeadded if Flag_NeedMerge: j = j + 1 else: break i = j + 1 newrawcontents.append(tempcodeline) self.rawcontents = newrawcontents return self
def mergeunfinishline(self): tempcodeindent = replpython.getpythonindent_multiline(self.rawcontents) newrawcontents = list() i = 0 while i < len(tempcodeindent): tempcodeline = "" j = i while True: tobeadded = self.rawcontents[j] Flag_NeedMerge = not tempcodeindent[j][1] if j != i and tempcodeindent[j - 1][2] not in { UnfinishType.DOUBLEQUOTE, UnfinishType.SINGLEQUOTE, UnfinishType.LONGSTRING, UnfinishType.COMMENT }: tobeadded = tobeadded.lstrip() if tempcodeindent[j][2] not in {UnfinishType.LONGSTRING}: tobeadded = tobeadded.rstrip() if tempcodeindent[j][2] not in { UnfinishType.LONGSTRING } and self.rawcontents[j][-1] == "\\": tobeadded = tobeadded[:-1] Flag_NeedMerge = True tempcodeline += tobeadded if Flag_NeedMerge: j = j + 1 else: i = j + 1 break newrawcontents.append(tempcodeline) self.rawcontents = newrawcontents # for i in range(len(self.rawcontents)): # indentlevel, finishflag, unfinishtype = replpython.getpythonindent(self.rawcontents[:i]) # if not finishflag: # if unfinishtype in {UnfinishType.DOUBLEQUOTE, UnfinishType.SINGLEQUOTE, UnfinishType.LONGSTRING, UnfinishType.COMMENT}: # templine = self.rawcontents[i - 1] + self.rawcontents[i] # self.rawcontents = self.rawcontents[:i-1] + [templine] + self.rawcontents[i+1:] # self.mergeunfinishline() # return self # else: # templine = self.rawcontents[i - 1] + self.rawcontents[i].lstrip() # self.rawcontents = self.rawcontents[:i-1] + [templine] + self.rawcontents[i+1:] # self.mergeunfinishline() # return self return self
def removecomments(self): newrawcontents = list() i = 0 # for i in range(len(self.rawcontents)): multi_indent = replpython.getpythonindent_multiline(self.rawcontents) while i < len(self.rawcontents): # indentlevel, finishflag, unfinishtype = replpython.getpythonindent(self.rawcontents[:(i)]) if i == 0: indentlevel, finishflag, unfinishtype = (0, False, -1) else: indentlevel, finishflag, unfinishtype = multi_indent[i - 1] if unfinishtype in { UnfinishType.DOUBLEQUOTE, UnfinishType.SINGLEQUOTE, UnfinishType.LONGSTRING, UnfinishType.COMMENT }: newrawcontents.append(self.rawcontents[i]) i += 1 continue if self.rawcontents[i].strip().startswith("#"): # self.rawcontents = self.rawcontents[:i] + self.rawcontents[i + 1:] # self.removecomments() # return i += 1 continue if finishflag and self.rawcontents[i].strip().startswith('"""'): for j in range(i, len(self.rawcontents)): j_indentlevel, j_finishflag, j_unfinishtype = replpython.getpythonindent( self.rawcontents[i:j + 1]) if j_finishflag == True: break i = j + 1 continue # self.rawcontents = self.rawcontents[:i] + self.rawcontents[j+1:] # self.removecomments() # return newrawcontents.append(self.tructcomments(self.rawcontents[i])) i += 1 self.rawcontents = newrawcontents
def analysepythonindent(self): self.codeindent = replpython.getpythonindent_multiline( self.rawcontents)