Modified method printVars(), added XML output

develop
Самоукин Алексей 14 years ago
parent ba90501a21
commit 816049fc76

@ -620,35 +620,51 @@ storage of variables templates")%location)
ret[nameVar] = getattr(self, nameVar)
return ret
def printVars(self, varsFilter=None, varsNames=[]):
def printVars(self, varsFilter=None, varsNames=[], outFormat="default"):
"""распечатать список переменных с значениями"""
var=None
var=self.getVars(varsFilter, varsNames)
mlen_name=0;
mlen_type=0;
mlen_mode=0;
for i,j in var.items():
if len(i)>mlen_name:
mlen_name=len(i)
if not '[' in var[i].mode:
mode="[%s]"%(var[i].mode.lower())
var[i].mode=mode
if len(mode)>mlen_mode:
mlen_mode=len(mode)
plist=var.keys()
plist.sort()
br = fillstr("-",mlen_name) + " " +\
fillstr("-",mlen_mode) + " " + fillstr("-",10)
cl_overriding.printSUCCESS(_("The list of variables:"))
cl_overriding.printSUCCESS(_("Variable name").center(mlen_name)+ " " +\
_("Mode") + " " +_("Value"))
cl_overriding.printSUCCESS(br)
for i in plist:
p_val=var[i].value
if var[i].official:
continue
columnWrite( i, mlen_name, var[i].mode.lower(), mlen_mode, p_val)
cl_overriding.printSUCCESS(br)
if outFormat == "default":
mlen_name=0;
mlen_type=0;
mlen_mode=0;
for i,j in var.items():
if len(i)>mlen_name:
mlen_name=len(i)
if not '[' in var[i].mode:
mode="[%s]"%(var[i].mode.lower())
var[i].mode=mode
if len(mode)>mlen_mode:
mlen_mode=len(mode)
plist=var.keys()
plist.sort()
br = fillstr("-",mlen_name) + " " +\
fillstr("-",mlen_mode) + " " + fillstr("-",10)
cl_overriding.printSUCCESS(_("The list of variables:"))
cl_overriding.printSUCCESS(_("Variable name").center(mlen_name) +\
" " + _("Mode") + " " +_("Value"))
cl_overriding.printSUCCESS(br)
for i in plist:
p_val=var[i].value
if var[i].official:
continue
columnWrite( i, mlen_name, var[i].mode.lower(), mlen_mode, p_val)
cl_overriding.printSUCCESS(br)
elif outFormat == "xml":
xmlObj = _varsXML()
varNames = sorted(var.keys())
for name in varNames:
value = var[name].value
typeVar = type(value)
if typeVar in (str, int, float):
xmlObj.addVar(name, value)
elif typeVar == list:
valueList = value
xmlObj.addList(name, valueList)
elif typeVar == dict:
valueDict = value
xmlObj.addDict(name, valueDict)
cl_overriding.printSUCCESS(xmlObj.toXML(),printBR=False)
def GetList(self, nameVar, spl=","):
"""Получить значение переменной в виде списка
@ -816,3 +832,59 @@ class glob_attr:
pass
return False
class _varsXML:
declaration = '<?xml version="1.0" encoding="UTF-8"?>\n'
rootElementStart = '<variables>\n'
rootElementEnd = '</variables>\n'
indent = " "
templateVar = """%(indent)s<var type="var" name="%(name)s">\n\
%(indent)s%(indent)s<value>%(value)s</value>\n\
%(indent)s</var>\n"""
templateListStart = """%(indent)s<var type="list" name="%(name)s">\n"""
templateListValue = """%(indent)s%(indent)s<value>%(value)s</value>\n"""
templateListEnd = """%(indent)s</var>\n"""
templateDictStart = """%(indent)s<var type="dict" name="%(name)s">\n"""
templateDictValue = """%(indent)s%(indent)s<value name="%(name)s">%(value)s\
</value>\n"""
templateDictEnd = """%(indent)s</var>\n"""
templateDoc = "%(declaration)s%(rootStart)s%(vars)s%(rootEnd)s"
varsXML = ""
def addVar(self, name, value):
"""Add var to XML"""
dictVar = {"indent":self.indent,
"name":name,
"value":str(value)}
self.varsXML += self.templateVar %dictVar
def addList(self, name, valueList):
"""Add var (valie - list) to XML"""
dictVar = {"indent":self.indent,
"name":name}
varXml = self.templateListStart %dictVar
for value in valueList:
dictValue = {"indent":self.indent,
"value":str(value)}
varXml += self.templateListValue %dictValue
varXml += self.templateListEnd %dictVar
self.varsXML += varXml
def addDict(self, name, valueDict):
"""Add var (valie - list) to XML"""
dictVar = {"indent":self.indent,
"name":name}
varXml = self.templateDictStart %dictVar
for nameDict, valueDict in valueDict.items():
dictValue = {"indent":self.indent,
"name":nameDict,
"value":str(valueDict)}
varXml += self.templateDictValue %dictValue
varXml += self.templateDictEnd %dictVar
self.varsXML += varXml
def toXML(self):
dictXML = {"declaration":self.declaration,
"rootStart":self.rootElementStart,
"vars":self.varsXML,
"rootEnd":self.rootElementEnd}
return self.templateDoc %dictXML

@ -221,9 +221,14 @@ class opt(optparse.OptionParser):
'longOption':"vars",
'help':_("print variables")
},
{'longOption':"varsfilter",
{'longOption':"filter",
'optVal':"FILTER",
'help':_("print filtered variables")
'help':_("filtered variables, \
is used in conjunction with the options '-v - vars'")
},
{'longOption':"xml",
'help':_("output variables in the form of XML, \
is used in conjunction with the option '-v - vars'")
}]
color_control = \

Loading…
Cancel
Save