From 425cfbea953cd4cd3cfb732458f661c39d6acb84 Mon Sep 17 00:00:00 2001 From: asamoukin Date: Wed, 27 Aug 2008 13:12:29 +0000 Subject: [PATCH] git-svn-id: http://svn.calculate.ru/calculate2/calculate-lib/trunk@143 c91db197-33c1-4113-bf15-f8a5c547ca64 --- pym/cl_base.py | 1 - pym/cl_utils2.py | 57 ++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 53 insertions(+), 5 deletions(-) diff --git a/pym/cl_base.py b/pym/cl_base.py index aaff864..ab73946 100644 --- a/pym/cl_base.py +++ b/pym/cl_base.py @@ -360,7 +360,6 @@ class opt: """ self.shortOpt = shortOpt self.longOpt = longOpt - self.getopt() self.sysArgv = sys.argv[1:] def getopt(self): diff --git a/pym/cl_utils2.py b/pym/cl_utils2.py index b09455e..59e9323 100644 --- a/pym/cl_utils2.py +++ b/pym/cl_utils2.py @@ -59,6 +59,9 @@ class cl_params: if par.has_key("shortOption"): if self.access(par): sp.append(par["shortOption"]) + elif par.has_key("longOption"): + if self.access(par): + sp.append(par["longOption"]) #sp.sort() for shortOption in sp: for par in self.data: @@ -83,19 +86,34 @@ class cl_params: CONWIDTH-self.column_width) self.addChapterHelp(numChapter,helpTxt) break + elif par.has_key("longOption") and self.access(par): + if par["longOption"] == shortOption: + numChapter = self.getChapterNumber(par['helpChapter']) + longOption = par["longOption"] + helpTxt = pcs( + " --%s "%(longOption), + self.column_width, par['help'], + CONWIDTH-self.column_width) + self.addChapterHelp(numChapter,helpTxt) + break for par in self.data: - if not par.has_key("shortOption") and \ + if not (par.has_key("shortOption") or\ + par.has_key("longOption")) and\ self.access(par): helpTxt = par['help'] numChapter = self.getChapterNumber(par['helpChapter']) self.addChapterHelp(numChapter,helpTxt) - def getHelp(self): + def getHelp(self, optionsChapters=False): # Выдать справку help = "" for numChapter in range(len(self.chapter)): chapter = self.chapter[numChapter] + typeChapter = chapter[4] nameChapter = chapter[0] + if optionsChapters and typeChapter=="options": + if not (nameChapter in optionsChapters): + continue visibleChapter = chapter[1] beforeStrChapter = chapter[2] afterStrChapter = chapter[3] @@ -110,7 +128,7 @@ class cl_params: help += self.chapterBloc[numChapter] + aft return help.encode("UTF-8") - def addChapterHelp(self,numChapter,helpTxt): + def addChapterHelp(self, numChapter, helpTxt): # Добавить в раздел помощи numChapteк тектстовую строку helpTxt self.chapterBloc[numChapter] += helpTxt return True @@ -131,11 +149,37 @@ class cl_params: else: return True - def getAllOpt(self,typeOpt="short"): + def getTypeChapter(self, nameChapter): + """Показать тип раздела по его имени""" + flagFind = False + for numChapter in range(len(self.chapter)): + chapter = self.chapter[numChapter] + name = chapter[0] + if nameChapter == name: + typeChapter = chapter[4] + flagFind = True + break + if flagFind: + return typeChapter + else: + return False + + def clearAllOpt(self): + if len(self.shortOpt) > 0: + self.shortOpt = [] + if len(self.longOpt) > 0: + self.longOpt = [] + return True + + def getAllOpt(self,typeOpt="short", optionsChapters=False): # Выдать все действующие опции if typeOpt=="short": if len(self.shortOpt) == 0: for par in self.data: + if optionsChapters and\ + self.getTypeChapter(par['helpChapter'])=="options": + if not (par['helpChapter'] in optionsChapters): + continue if par.has_key("shortOption") and self.access(par): if par.has_key("optVal"): self.shortOpt.append(par["shortOption"]+':') @@ -145,6 +189,11 @@ class cl_params: if typeOpt=="long": if len(self.longOpt) == 0: for par in self.data: + if optionsChapters and\ + self.getTypeChapter(par['helpChapter'])=="options": + #print par["longOption"] + if not (par['helpChapter'] in optionsChapters): + continue if par.has_key("longOption") and self.access(par): if par.has_key("optVal"): self.longOpt.append(par["longOption"]+'=')