def runFix(jobconf, classesObj): def fixPng(): return def removeBOM(fpath): content = open(fpath, "rb").read() if content.startswith(codecs.BOM_UTF8): console.debug("removing BOM: %s" % filePath) open(fpath, "wb").write(content[len(codecs.BOM_UTF8):]) return # - Main --------------------------------------------------------------- if not isinstance(jobconf.get("fix-files", False), types.DictType): return console = Context.console classes = classesObj.keys() fixsettings = ExtMap(jobconf.get("fix-files")) # Fixing JS source files console.info("Fixing whitespace in source files...") console.indent() console.info("Fixing files: ", False) numClasses = len(classes) eolStyle = fixsettings.get("eol-style", "LF") tabWidth = fixsettings.get("tab-width", 2) for pos, classId in enumerate(classes): console.progress(pos+1, numClasses) classEntry = classesObj[classId] filePath = classEntry.path fileEncoding = classEntry.encoding fileContent = filetool.read(filePath, fileEncoding) # Caveat: as filetool.read already calls any2Unix, converting to LF will # not work as the file content appears unchanged to this function if eolStyle == "CR": fixedContent = textutil.any2Mac(fileContent) elif eolStyle == "CRLF": fixedContent = textutil.any2Dos(fileContent) else: fixedContent = textutil.any2Unix(fileContent) fixedContent = textutil.normalizeWhiteSpace(textutil.removeTrailingSpaces(textutil.tab2Space(fixedContent, tabWidth))) if fixedContent != fileContent: console.debug("modifying file: %s" % filePath) filetool.save(filePath, fixedContent, fileEncoding) # this has to go separate, as it requires binary operation removeBOM(filePath) console.outdent() # Fixing PNG files -- currently just a stub! if fixsettings.get("fix-png", False): console.info("Fixing PNGs...") console.indent() fixPng() console.outdent() return
def applyEolStyle(self, content): eolStyle = self._context["jobconf"].get("translate/eol-style", "LF") if eolStyle == "CR": content = textutil.any2Mac(content) elif eolStyle == "CRLF": content = textutil.any2Dos(content) else: content = textutil.any2Unix(content) return textutil.removeTrailingSpaces(content)
def readPatchInfoFiles(self, baseDir): """ Reads all patch/info files from a directory and compiles the containing regular expressions. Retuns a list comiled RE (the output of entryCompiler) """ patchList = [] emptyLine = re.compile("^\s*$") for root, dirs, files in os.walk(baseDir): # Filter ignored directories for ignoredDir in [".svn", "CVS"]: if ignoredDir in dirs: dirs.remove(ignoredDir) # Searching for files for fileName in files: filePath = os.path.join(root, fileName) fileContent = textutil.any2Unix( filetool.read(filePath, "utf-8")) patchList.append({ "path": filePath, "content": fileContent.split("\n") }) logging.debug(" - %s" % filePath) logging.debug(" - Compiling expressions...") compiledPatches = [] for patchFile in patchList: logging.debug(" - %s" % os.path.basename(patchFile["path"])) for line in patchFile["content"]: if emptyLine.match(line) or line.startswith( "#") or line.startswith("//"): continue compiled = self.entryCompiler(line) if compiled != None: compiledPatches.append(compiled) return compiledPatches
def readPatchInfoFiles(baseDir): """ Reads all patch/info files from a directory and compiles the containing regular expressions. Retuns a list comiled RE (the output of entryCompiler) """ patchList = [] emptyLine = re.compile("^\s*$") for root, dirs, files in os.walk(baseDir): # Filter ignored directories for ignoredDir in [".svn", "CVS"]: if ignoredDir in dirs: dirs.remove(ignoredDir) # Searching for files for fileName in files: filePath = os.path.join(root, fileName) fileContent = textutil.any2Unix(filetool.read(filePath, "utf-8")) patchList.append({"path":filePath, "content":fileContent.split("\n")}) logging.debug(" - %s" % filePath) logging.debug(" - Compiling expressions...") compiledPatches = [] for patchFile in patchList: logging.debug(" - %s" % os.path.basename(patchFile["path"])) for line in patchFile["content"]: if emptyLine.match(line) or line.startswith("#") or line.startswith("//"): continue compiled = entryCompiler(line) if compiled != None: compiledPatches.append(compiled) return compiledPatches
def runFix(jobconf, classesObj): def fixPng(): return def removeBOM(fpath): content = open(fpath, "rb").read() if content.startswith(codecs.BOM_UTF8): console.debug("removing BOM: %s" % filePath) open(fpath, "wb").write(content[len(codecs.BOM_UTF8):]) return # - Main --------------------------------------------------------------- if not isinstance(jobconf.get("fix-files", False), types.DictType): return console = Context.console classes = classesObj.keys() fixsettings = ExtMap(jobconf.get("fix-files")) # Fixing JS source files console.info("Fixing whitespace in source files...") console.indent() console.info("Fixing files: ", False) numClasses = len(classes) eolStyle = fixsettings.get("eol-style", "LF") tabWidth = fixsettings.get("tab-width", 2) for pos, classId in enumerate(classes): console.progress(pos + 1, numClasses) classEntry = classesObj[classId] filePath = classEntry.path fileEncoding = classEntry.encoding fileContent = filetool.read(filePath, fileEncoding) # Caveat: as filetool.read already calls any2Unix, converting to LF will # not work as the file content appears unchanged to this function if eolStyle == "CR": fixedContent = textutil.any2Mac(fileContent) elif eolStyle == "CRLF": fixedContent = textutil.any2Dos(fileContent) else: fixedContent = textutil.any2Unix(fileContent) fixedContent = textutil.normalizeWhiteSpace( textutil.removeTrailingSpaces( textutil.tab2Space(fixedContent, tabWidth))) if fixedContent != fileContent: console.debug("modifying file: %s" % filePath) filetool.save(filePath, fixedContent, fileEncoding) # this has to go separate, as it requires binary operation removeBOM(filePath) console.outdent() # Fixing PNG files -- currently just a stub! if fixsettings.get("fix-png", False): console.info("Fixing PNGs...") console.indent() fixPng() console.outdent() return