def main(): if len(sys.argv) == 1: sys.exit(getUsage()) parser = XmlConfig() try: opts, args = getopt(sys.argv[1:], parser.getShortOptions(), parser.getLongOptions()) if not opts: raise GetoptError("No option specified!") optlist = [] for opt in opts: optlist = optlist + [x for x in opt if x] options = parser.getOptions() for option in options: shortOpt = "-" + option.getShortOpt() longOpt = "--" + option.getLongOpt() if shortOpt in optlist or longOpt in optlist: pkg = option.getPackage() slotClass = option.getSlotClass() instance = createGenerator(pkg, slotClass, opts, args) instance.init() instance.run() break except GetoptError, ex: print "Error: ", ex sys.exit(getUsage())
class TemplateParser: def __init__(self, tmpfile, output): self.__config = XmlConfig() self.__template = path.join(self.__config.getConfigPath(), tmpfile) self.__output = output self.__observers = [] self.__varRe = re.compile(r"\${(?P<var>\b\w+\b)}") def addObserver(self, observer): self.__observers.append(observer) def removeObserver(self, observer): self.__observers.remove(observer) def parse(self): with open(self.__output, "w+") as stream: map(lambda line:self.__processLine(line, stream), open(self.__template)) def __processLine(self, line, stream): line = self.__replaceVars(line) stream.write(line) map(lambda ob:ob.onPostProcessLine(line, stream), self.__observers) def __replaceVars(self, s): match = self.__varRe.search(s) if match == None: return s start, end = match.span() var = match.group("var").lower() if var == "wrapper": s = self.__replaceWrapper(s, start, end) elif var == "date": s = "".join((s[:start], date.today().isoformat(), s[end:])) else: value = self.__config.get(var) if value != None: start, end = match.span() s = self.__varRe.sub(value, s) return "".join((s[:end], self.__replaceVars(s[end:]))) def __replaceWrapper(self, s, start, end): head, tail = path.split(self.__output) name, ext = path.splitext(tail) value = self.__config.getWrapperPrefix() value = value if value else "" wrapper = "%s%s" % (value, name.upper()) return "".join((s[:start], wrapper, s[end:]))
def __init__(self, tmpfile, output): self.__config = XmlConfig() self.__template = path.join(self.__config.getConfigPath(), tmpfile) self.__output = output self.__observers = [] self.__varRe = re.compile(r"\${(?P<var>\b\w+\b)}")