1: #line 77 "source_drivers.ipk" 2: #--------------------------------------------------------- 3: # gets input from a named file 4: from interscript.drivers.sources import source_open_error 5: from interscript.drivers.sources.base import source 6: from interscript.drivers.sources.base import eof 7: import string 8: import os 9: 10: def loadfile(filename): 11: "return a list of lines, trailing whitespace removed" 12: try: 13: f = open(filename) 14: except: 15: raise source_open_error,filename 16: data = f.readlines() 17: f.close() 18: for i in range(len(data)): 19: data[i]=string.rstrip(data[i]) 20: return data 21: 22: def parse_source_filename(filename, prefix): 23: pathlist = string.split(filename,'/') 24: if prefix == '': 25: prefix = os.getcwd() 26: if prefix[-1] != os.sep: 27: prefix = prefix + os.sep 28: directory = prefix + string.join(pathlist[:-1],os.sep) 29: if directory[-1] != os.sep: 30: directory = directory + os.sep 31: basename = pathlist[-1] 32: full_filename = directory + basename 33: return pathlist, basename, directory, full_filename 34: 35: class named_file_source(source): 36: def __init__(self,pass_frame,filename, prefix=''): 37: source.__init__(self) 38: pass_frame.iflist.append(filename) 39: self.name = filename 40: 41: pathlist, self.basename, self.directory, self.filename =\ 42: parse_source_filename(filename, prefix) 43: 44: try: 45: self.file = open(self.filename,'r') 46: self.closed = 0 47: except: 48: raise source_open_error,filename 49: 50: def __del__(self): 51: if getattr(self,'file'): self.file.close() 52: 53: def readline(self): 54: if self.closed: 55: raise eof 56: line = self.file.readline() 57: if len(line)==0: raise eof 58: self.lines_read = self.lines_read + 1 59: return line 60: 61: def get_filename(self): 62: return self.name 63: