diff --git a/pym/cl_template.py b/pym/cl_template.py index b444b6a..f35cba2 100644 --- a/pym/cl_template.py +++ b/pym/cl_template.py @@ -367,6 +367,68 @@ class _terms(_error, _shareTermsFunction): return False return True + def splitParLine(self, linePar): + '''Split params line''' + def splitQuote(listPar, quoteSymbol): + listTerm = map(lambda x: x+quoteSymbol, ("=",">","<")) + flagQ = False + mass = [] + v = "" + for i in listPar: + if i.count(quoteSymbol)==1: + if flagQ and i.endswith(quoteSymbol): + v = v + " " + i + mass.append(v) + v = "" + flagQ = False + elif filter(lambda x: x in i, listTerm): + flagQ = True + v = i + else: + mass.append(i) + elif flagQ: + v = v + " " + i + else: + mass.append(i) + foundPar = list(set(mass)-set(listPar)) + return not flagQ, filter(lambda x: not x in foundPar, mass),foundPar + + listPar = re.split("\s+",linePar) + flagFoundQ = "'" in linePar + flagFoundQQ = '"' in linePar + if flagFoundQ and flagFoundQQ: + flagQ, listSplQPar, listFoundQPar = splitQuote(listPar, "'") + if flagQ: + flagQQ, listSplQQPar, listFoundQQPar = splitQuote(listSplQPar, + '"') + if flagQQ: + listPar = listSplQQPar + listFoundQPar + listFoundQQPar + elif flagFoundQQ: + flagQQ, listSplQQPar, listFoundQQPar = splitQuote(listPar, '"') + if flagQQ: + listPar = listSplQQPar + listFoundQQPar + elif flagFoundQ: + flagQ, listSplQPar, listFoundQPar = splitQuote(listPar, "'") + if flagQ: + listPar = listSplQPar + listFoundQPar + if flagFoundQ: + listQPar = [] + for par in listPar: + if par.endswith("'"): + listQPar.append(par.replace("'","")) + else: + listQPar.append(par) + listPar = listQPar + if flagFoundQQ: + listQQPar = [] + for par in listPar: + if par.endswith('"'): + listQQPar.append(par.replace('"','')) + else: + listQQPar.append(par) + listPar = listQQPar + return listPar + class fileHeader(_terms): """Обработка заголовков шаблонов и конфигурационных файлов @@ -459,7 +521,7 @@ class fileHeader(_terms): self.body = self.body[reL.end():] else: self.body = "" - paramList = re.split("\s+",paramLine) + paramList = self.splitParLine(paramLine) if paramList: for i in paramList: foundTerm = False @@ -603,7 +665,7 @@ class dirHeader(_terms): %self.body) flagErrorBody = True if not flagErrorBody: - paramList = re.split("\s+",paramLine) + paramList = self.splitParLine(paramLine) if paramList: for i in paramList: foundTerm = False