Added list() and disk() template functions

develop
Самоукин Алексей 14 years ago
parent d1c2a73769
commit c42bac332c

@ -2955,6 +2955,136 @@ or 'lower' or 'capitalize'"))
textTemplateTmp[resS.end():]
return textTemplateTmp
def funcList(self, funArgv, resS, localVars, textTemplateTmp):
"""Функция шаблона list().
Если первый аргумент является именем локальной или глобальной
переменной и значение переменной является списком, выдает
элемент списка по второму аргументу индексу.
Первый элемент имеет индекс 0
"""
terms = funArgv.replace(" ","").split(",")
# У функции должно быть два аргумента
if len(terms) != 2:
self.printErrTemplate()
cl_overriding.exit(1)
# Название локальной или глобальной переменной
nameLocVar = terms[0]
strIndex = terms[1]
try:
intIndex = int(strIndex)
except:
cl_overriding.printERROR(_("'%s' is not a number")%strIndex)
self.printErrTemplate()
cl_overriding.exit(1)
flagFoundVar = False
if nameLocVar in localVars.keys():
flagFoundVar = True
value = localVars[nameLocVar]
else:
try:
value = self.objVar.Get(nameLocVar)
flagFoundVar = True
except:
pass
if not flagFoundVar:
# Если переменная не существует
cl_overriding.printERROR(_("error var %s not exists")\
%str(nameLocVar))
self.printErrTemplate()
cl_overriding.exit(1)
if not type(value) in (list,tuple):
# Значение переменной не список или кортеж
cl_overriding.printERROR(_("value of %s is not a list or tuple")\
%str(nameLocVar))
self.printErrTemplate()
cl_overriding.exit(1)
try:
replace = str(value[intIndex])
except:
cl_overriding.printERROR(_("%s wrong")%strIndex)
self.printErrTemplate()
cl_overriding.exit(1)
textTemplateTmp = textTemplateTmp[:resS.start()] + replace +\
textTemplateTmp[resS.end():]
return textTemplateTmp
def funcDisk(self, funArgv, resS, localVars, textTemplateTmp):
"""Функция шаблона disk().
Первый аргумент ищется в значении переменной os_disk_install
(значение os_disk_install - список точек монтирования при установке)
второй аргумент используется для поиска в переменной
os_disk_второй_аргумент (значение os_disk_второй_аргумент - список)
В os_disk_install ищется первый аргумент, находим его индекс
результат - элемент cписка из os_disk_второй_аргумент с этим индексом
"""
terms = funArgv.replace(" ","").split(",")
# У функции должно быть два аргумента
if len(terms) != 2:
self.printErrTemplate()
cl_overriding.exit(1)
# Название глобальной переменной
mountPoint = terms[0]
lastElementVar = terms[1]
if not mountPoint or mountPoint[:1] !="/":
cl_overriding.printERROR(_("%s wrong")%lastElementVar)
self.printErrTemplate()
cl_overriding.exit(1)
nameVar = "os_disk_install"
try:
valueVar = self.objVar.Get(nameVar)
except:
# Если переменная не существует
cl_overriding.printERROR(_("error var %s not exists")%nameVar)
self.printErrTemplate()
cl_overriding.exit(1)
nameElementVar = "os_disk_%s"%lastElementVar
try:
valueElementVar = self.objVar.Get(nameElementVar)
except:
# Если переменная не существует
cl_overriding.printERROR(_("%s wrong")%lastElementVar)
cl_overriding.printERROR(_("error var %s not exists")\
%nameElementVar)
self.printErrTemplate()
cl_overriding.exit(1)
if not type(valueVar) in (list,tuple):
# Значение переменной не список или кортеж
cl_overriding.printERROR(_("value of %s is not a list or tuple")\
%nameVar)
self.printErrTemplate()
cl_overriding.exit(1)
if not type(valueElementVar) in (list,tuple):
# Значение переменной не список или кортеж
cl_overriding.printERROR(_("value of %s is not a list or tuple")\
%nameElementVar)
self.printErrTemplate()
cl_overriding.exit(1)
if len(valueVar) != len(valueElementVar):
cl_overriding.printERROR(\
_("size %s is not equal to the size of %s")\
%(nameVar, nameElementVar))
self.printErrTemplate()
cl_overriding.exit(1)
index = None
for num, mPoint in enumerate(valueVar):
if mountPoint == mPoint:
index = num
break
if index is None:
for num, mPoint in enumerate(valueVar):
if "/" == mPoint:
index = num
break
if index is None:
cl_overriding.printERROR(_("in the value of the variable \
os_disk_install not found mount point '\' and '\%s'")%mountPoint)
self.printErrTemplate()
cl_overriding.exit(1)
replace = valueElementVar[index]
textTemplateTmp = textTemplateTmp[:resS.start()] + replace +\
textTemplateTmp[resS.end():]
return textTemplateTmp
def printErrTemplate(self):
"""Печать ошибки при обработке функций шаблона"""
cl_overriding.printERROR(_("error in template %s")%self.nameTemplate)

Loading…
Cancel
Save