Esempio n. 1
0
 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
Esempio n. 2
0
    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
Esempio n. 3
0
    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
Esempio n. 4
0
 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
Esempio n. 5
0
 def analysepythonindent(self):
     self.codeindent = replpython.getpythonindent_multiline(
         self.rawcontents)