def _preprocessSource(self, sourceFile, sourceName):
        '''
        load file by lines, strip comments, recursively expand include instructions
        keep track of the origin of each line
        '''
        rawLines = sourceFile.readlines()
        sourceFile.close()

        processed = []

        for lineNumber,line in enumerate(rawLines):
            commentStripped = self.commentRegex.sub('', line)
            if not self.stripEmptyLines or commentStripped.strip():
                 processed.append((commentStripped, sourceName, lineNumber))

        # now, check whether we have any include files
        for x in range(len(processed)-1, -1, -1):    # go backwards b/c we will insert more lines
            line = processed[x][0]
            matched = self.includeRegex.match(line)
            if matched:
                includeFileName = matched.group(1)
                fullName = os.path.join(self.templateDir, includeFileName)
                includeFile = open(fullName)
                processed[x:x+1] = self._preprocessSource(includeFile, includeFileName)
        return processed

        load file by lines, strip comments, recursively expand include instructions
        keep track of the origin of each line
        
recipes/Python/465508_Yaptoo_Yaptu_outrageously_obfuscated__or_yet/recipe-465508.py