From b71c3574aa719c7e2756a5c3865922cac962efaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B0=D0=BC=D0=BE=D1=83=D0=BA=D0=B8=D0=BD=20=D0=90?= =?UTF-8?q?=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Fri, 13 Aug 2010 09:41:57 +0000 Subject: [PATCH] Modified method printVars() --- pym/cl_datavars.py | 48 ++++++++++++++++++++++++++-------------------- pym/cl_opt.py | 6 +++++- 2 files changed, 32 insertions(+), 22 deletions(-) diff --git a/pym/cl_datavars.py b/pym/cl_datavars.py index d49bd06..857767a 100644 --- a/pym/cl_datavars.py +++ b/pym/cl_datavars.py @@ -59,8 +59,6 @@ class var: def __init__(self, parentObj): # словарь зависимых переменных {имя:значение} self.dependValues = {} - # тип переменной (атрибут type) - self.type = ('default') # объект который создал этот объект self.parentObj = parentObj @@ -208,17 +206,16 @@ class DataVars(object): else: return (dataVar,False) - def __setAttributesVar(self, var, nameVar, dict): + def __setAttributesVar(self, var, nameVar, dictVar): """Установка аттрибутов для созданного объекта var - название аттрибута и его значение берется из словаря dict + название аттрибута и его значение берется из словаря dictVar """ - dict['type'] = nameVar.split('_') - if not set(dict.keys()) <= set(dir(var)): + if not set(dictVar.keys()) <= set(dir(var)): raise self.DataVarsError(\ _("error initalize variable %s, incorrect data")%nameVar) - for nameAttr in dict.keys(): - setattr(var,nameAttr, dict[nameAttr]) + for nameAttr in dictVar.keys(): + setattr(var, nameAttr, dictVar[nameAttr]) return True def __Get(self, nameVar): @@ -596,28 +593,37 @@ storage of variables templates")%location) break return foundVar - def getVars(self, type_names=None): + def getVars(self, varsFilter=None, varsNames=[]): """Словарь переменных для печати""" + # проверка фильтра + reFilter = False + if varsFilter: + try: + reFilter = re.compile("^%s$"%varsFilter) + except: + cl_overriding.printERROR(_("wrong vars filter '%s'")\ + %str(varsFilter)) + cl_overriding.exit(1) ret = {} for section, moduleVar, fillobj in self._importList: - dataVar=moduleVar.Data + dataVar = moduleVar.Data dictVars = dir(dataVar) for nameVar in dictVars: - if not "__" in nameVar: - if not (getattr(dataVar,nameVar).has_key("official") and\ - getattr(dataVar,nameVar)['official']): - self.Get(nameVar) - if type_names: - varType =list(getattr(self, nameVar).type) - if not set(type_names)<=set(varType): - continue - ret[nameVar] = getattr(self, nameVar) + if not "__" in nameVar and not\ + (getattr(dataVar,nameVar).has_key("official") and\ + getattr(dataVar,nameVar)['official']): + if varsNames and not nameVar in varsNames: + continue + if reFilter and not reFilter.search(nameVar): + continue + self.Get(nameVar) + ret[nameVar] = getattr(self, nameVar) return ret - def printVars(self,type_names=None): + def printVars(self, varsFilter=None, varsNames=[]): """распечатать список переменных с значениями""" var=None - var=self.getVars(type_names) + var=self.getVars(varsFilter, varsNames) mlen_name=0; mlen_type=0; mlen_mode=0; diff --git a/pym/cl_opt.py b/pym/cl_opt.py index 0a9bc3e..db1e1c8 100644 --- a/pym/cl_opt.py +++ b/pym/cl_opt.py @@ -220,6 +220,10 @@ class opt(optparse.OptionParser): {'shortOption':"v", 'longOption':"vars", 'help':_("print variables") + }, + {'longOption':"varsfilter", + 'optVal':"FILTER", + 'help':_("print filtered variables") }] color_control = \ @@ -297,7 +301,7 @@ class opt(optparse.OptionParser): def checkVarSyntax(self,values): """Check value of parameter set, was used for change vars""" - reCheckSet = re.compile("^([a-z_]+=[^,]+)(,\s*[a-z_]+=[^,]+)*$") + reCheckSet = re.compile("^[0-9a-z_]+=[^,]+(,[0-9a-z_]+=[^,]+)*$") if values.set: for val in values.set: if not reCheckSet.match(val):