diff --git a/pym/cl_utils2.py b/pym/cl_utils2.py index 13d1602..f82b504 100644 --- a/pym/cl_utils2.py +++ b/pym/cl_utils2.py @@ -50,7 +50,7 @@ class cl_help: self.progName словарь имена используемых программ и их номера для доступа к переменным Пример: {'cl-groupadd':0, 'cl-groupdel':1} - self.data список данных для словаря, каждый эленмент словарь: + self.data список данных для справки, каждый элемент словарь: progAccess: список номеров программ отображающих Пример: {'progAccess':(0,), 'shortOption':"g", @@ -178,9 +178,10 @@ class cl_help: continue bef = "\n"*beforeStrChapter aft = "\n"*afterStrChapter - if visibleChapter: + # если блок не пустой и раздел отображаемый + if len(textChapterBloc) > 0 and visibleChapter: help += nameChapter + ": " + bef - help += textChapterBloc + aft + help += textChapterBloc + aft return help.encode("UTF-8") def addChapterHelp(self, numChapter, helpTxt): @@ -198,6 +199,15 @@ class cl_help: self.data.append(dataHash) return True + def handleCheckAccess(self,dataHash): + """Замещаемый дополнительный обработчик проверки + доступности опции. + + Входные параметры: + dataHash элементы списка данных справки (self.data) + """ + return True + def access(self,dataHash): """Доступна ли опция вызывающей программе @@ -212,11 +222,13 @@ class cl_help: numProg = self.progName[self.cmdName] if 'progAccess' in dataHash: if numProg in dataHash['progAccess']: - return True + # вызов дополнительной проверки доступа к опции + return self.handleCheckAccess(dataHash) else: return False else: - return True + # вызов дополнительной проверки доступа к опции + return self.handleCheckAccess(dataHash) def getTypeChapter(self, nameChapter): """Получить тип раздела по его имени @@ -247,18 +259,19 @@ class cl_help: self.longOpt = [] return True - def getAllOpt(self,typeOpt="short", optionsChapters=False): + def getAllOpt(self,typeOpt="all", optionsChapters=False): """Получить все доступные опции Параметры: - typeOpt 'short'/'long', вернуть короткие или длинные опции + typeOpt 'short'/'long'/'all', вернуть короткие или длинные + опции или все (возвращаются кортежем) optionsChapters фильтр для опций по типам разделов (список,кортеж) Возвращаемые параметры: строка коротки или список строк длинных опций ('hb:c:wg:G:k:ms:u:') """ # Выдать все действующие опции - if typeOpt=="short": + if typeOpt=="short" or typeOpt=="all": if len(self.shortOpt) == 0: for par in self.data: if optionsChapters and\ @@ -270,8 +283,7 @@ class cl_help: self.shortOpt.append(par["shortOption"]+':') else: self.shortOpt.append(par["shortOption"]) - return "".join(self.shortOpt) - if typeOpt=="long": + if typeOpt=="long" or typeOpt=="all": if len(self.longOpt) == 0: for par in self.data: if optionsChapters and\ @@ -284,7 +296,12 @@ class cl_help: self.longOpt.append(par["longOption"]+'=') else: self.longOpt.append(par["longOption"]) + if typeOpt=="short": + return "".join(self.shortOpt) + elif typeOpt=="long": return self.longOpt + elif typeOpt=="all": + return ("".join(self.shortOpt),self.longOpt) def getShortOpt(self,option): """Из любой опции получить короткую опцию.