class InterpreterVue: def __init__(self, configJSON): self.interpreter = Interpreter(configJSON) self.config = self.interpreter.getConfig() self.pluginTemplate = MuseUI(self.interpreter) pass def addImports(self, data): code = "" for c in data['components']: s = self.interpreter.getSeparator(",\n", "", c, data['components']) code += "import %(class)s from '@/%(area)s/%(filename)s'%(sep)s" % { 'class' : c['name'], 'area' : c['parameters']['area'], 'filename' : c['parameters']['filename'], 'sep' : s } return code def addComponentInGlobal(self, data): code = "" for c in data['components']: s = self.interpreter.getSeparator(",\n", "", c, data['components']) code += "Vue.component('{}','{}');{}".format(c['parameters']['tag'] , c['name'], s) return code def addComponentInClass(self, data): code = "" for c in data['components']: s = self.interpreter.getSeparator(",\n", "", c, data['components']) code += " '{}':{}{}".format(c['parameters']['tag'], c['name'], s) return code def addComponentInTemplate(self, data): code = "" for c in data['components']: s = self.interpreter.getSeparator("\n", "", c, data['components']) code += " <{}/>{}".format(c['parameters']['tag'], s) return code def addModelInData(self, elM): code = "" for m in elM['fields']: s = self.interpreter.getSeparator(",\n", "", m, elM['fields']) code += " '{}':'{}'{}".format( m['field'], m['parameters']['valueDefaultData'], s ) return code def generateCode(self, config, model, content): if 'actions' in config: for el in config['actions']: if el['action'] == "addImports": content = self.interpreter.replace(content, el['tag'], self.addImports(model) ) if el['action'] == "addComponentInGlobal": print(' adding component in global...') content = self.interpreter.replace(content, el['tag'], self.addComponentInGlobal(model) ) if el['action'] == "addComponentInClass": print(' adding component in class...') content = self.interpreter.replace(content, el['tag'], self.addComponentInClass(model) ) if el['action'] == "addComponentInTemplate": print(' adding component in template...') content = self.interpreter.replace(content, el['tag'], self.addComponentInTemplate(model) ) if el['action'] == "addModelInData": print(' adding model in data...') content = self.interpreter.replace(content, el['tag'], self.addModelInData(model) ) content = self.pluginTemplate.generateCode(config, model, content); return content def generate(self, filenameJSON): templateDirectory = self.interpreter.getPathTemplate() outputDirectory = self.interpreter.getPathOut() model = self.interpreter.loadModel(filenameJSON) print(' Name: ' + model['project']) print(' description: ' + model['description']) print('') print('Generation actions Vue: ') print('------------------- ') for el in self.config['actions']: if el['action'] == "restartProject": self.interpreter.restartProject() if el['action'] == "createDirectory": print("- Create directory {} ...".format(el['pathOut'])) self.interpreter.createDirectory(outputDirectory + el['pathOut']) if el['action'] == "copy": filenameIn = templateDirectory+"{}/{}".format(el["pathIn"], el['filename']) print("- Coping file {} ...".format(filenameIn)) content = self.interpreter.loadFile(filenameIn) content = self.generateCode(el, model, content) filenameOut = outputDirectory+"{}/{}".format(el["pathOut"], el['filename']) self.interpreter.saveFile(filenameOut, content) self.interpreter.verifyFile(filenameOut) if el['action'] == "copyModels": for elM in model['models']: filenameIn = templateDirectory+"{}/{}".format(el["pathIn"], el['filename']) print("- Coping file {} ...".format(filenameIn)) content = self.interpreter.loadFile(filenameIn) content = self.generateCode(el, elM, content) filenameOut = outputDirectory+"{}/{}".format(el["pathOut"], elM['name'].capitalize() + ".vue" ) self.interpreter.saveFile(filenameOut, content) self.interpreter.verifyFile(filenameOut) if el['action'] == "execute": cmd = el['command'] self.interpreter.execute(cmd)
class InterpreterPG: def __init__(self, configJSON): self.interpreter = Interpreter(configJSON) self.config = self.interpreter.getConfig() pass def addName(self, data): code = data['name'] return code def addColumns(self, data): code = "\n" for c in data['fields']: code += "{} {},\n".format(c['field'], c['type']) return code def generateCode(self, item, model, content): if 'actions' in item: for el in item['actions']: if el['action'] == "addColumns": print(' adding columns...') content = self.interpreter.replace(content, el['tag'], self.addColumns(model)) if el['action'] == "addName": print(' adding name...') content = self.interpreter.replace(content, el['tag'], self.addName(model)) return content def generate(self, filenameJSON): templateDirectory = self.interpreter.getPathTemplate() outputDirectory = self.interpreter.getPathOut() model = self.interpreter.loadModel(filenameJSON) print(' Name: ' + model['project']) print(' description: ' + model['description']) print('') print('Generation actions Postgres: ') print('--------------------------- ') for el in self.config['actions']: if el['action'] == "restartProject": self.interpreter.restartProject() if el['action'] == "createDirectory": print("- Create directory {} ...".format(el['pathOut'])) self.interpreter.createDirectory(outputDirectory + el['pathOut']) if el['action'] == "copyTables": for elM in model['models']: filenameIn = templateDirectory + "{}/{}".format( el["pathIn"], el['filename']) print("- Coping file {} ...".format(filenameIn)) content = self.interpreter.loadFile(filenameIn) content = self.generateCode(el, elM, content) filenameOut = outputDirectory + "{}/{}".format( el["pathOut"], elM['name'] + ".sql") self.interpreter.saveFile(filenameOut, content) self.interpreter.verifyFile(filenameOut) if el['action'] == "execute": cmd = el['command'] self.interpreter.execute(cmd)