def replace_phrase(self, target_phrase, desired_phrase):
        f = File(self.filename)
        dummy = File('dummy.txt')
        target_len = len(target_phrase)-1
        for line in f._parse():
            dummy.skipline_if_written()
            index = -1
            wait = 0
            matched = True
            for char in line:
                index += 1
                write = False
                if wait == 0:
                    if char == target_phrase[0]:
                        if index + target_len > len(line):
                            matched = False
                        else:
                            mod = -1 
                            for test_char in target_phrase:
                                mod += 1
                                if line[index+mod] == test_char:
                                    continue
                                else:
                                    matched = False
                                    break
                        
                        if matched == False:
                            write = True
                        else:
                            dummy._write(desired_phrase)
                            wait = target_len
                    else:
                        write = True

                    if write == True:
                        dummy._write(char)
                    
                else:
                    wait -= 1

        f._delete()
        dummy._rename(self.filename)
Beispiel #2
0
    def cleanup_elevations(self):
        total_entries = self.raw_elevationfile.get_total_entries()
        p = Progress(total_entries, 'Getting high...')
        
        dummymap = File('dummy')
        if dummymap.written == True:
            dummymap._delete()
            
        elevationMEMORY = {}
        memCOUNT = 0
        for strcoord, floatelevation in self.raw_elevationfile.parse():
            p.update()

            coord = self.str2coord(strcoord)
            #
            elevation = int(round(float(floatelevation), 0))
            
            if elevation > 9:
                elevation = 9
            elif elevation < 0:
                elevation = 0
            else:
                pass
            
            elevationMEMORY[coord] = elevation
            memCOUNT += 1

            if memCOUNT > self.memLIMIT or p.progress == total_entries:
                if self.elevationfile.written == False:
                    for y in range(self.map_size[1]):
                        self.elevationfile.skipline_if_written()
                        for x in range(self.map_size[0]):
                            try:
                                elevation = elevationMEMORY[(x, y)]
                            except KeyError:
                                elevation = 0
                            self.elevationfile._write(str(elevation))
                else:
                    y = -1
                    for line in self.elevationfile._parse():
                        dummymap.skipline_if_written()
                        y += 1
                        x = -1
                        for char in line:
                            x += 1
                            if char != '0':
                                dummymap._write(char)
                            else:
                                try:
                                    elevation = elevationMEMORY[(x, y)]
                                except KeyError:
                                    elevation = 0
                                dummymap._write(str(elevation))

                    self.elevationfile._delete()
                    dummymap._rename(self.elevationfile.filename)
                    self.elevationfile = dummymap
                    dummymap = File('dummy')

                elevationMEMORY = {}
                memCOUNT = 0

            else:
                continue
            
        p.close()