예제 #1
0
    def implementArgumentProcessors(self, params, context):
        def isSimple(a):
            if a.condition or a.action:
                return False
            m = a.member
            return m.valueType == "std::string" and not m.values and not m.condition and not m.action

        lines = []
        for a in self._args:
            m = a.member
            poe = ProcessOptionExpander(context, self, m, a)
            if m.type == "multivalue" and (a.delimiter or not isSimple(a)):
                lines.extend(codegen.makeLines(processMultivalueArgumentTemplate, poe))
            elif m.type == "list" and a.delimiter:
                lines.extend(codegen.makeLines(processMultivalueListArgumentTemplate, poe))
            elif m.type == "list" and not isSimple(a):
                lines.extend(codegen.makeLines(processListArgumentTemplate, poe))
            elif not isSimple(a):
                lines.extend(codegen.makeLines(processArgumentTemplate, poe))
        return lines
예제 #2
0
 def implementOtionProcessors(self, params, context):
     lines = []
     processed = set()
     for o in self._options:
         m = o.member
         if m in processed:
             continue
         poe = ProcessOptionExpander(context, self, m, o)
         if m.type == "help":
             tmpl = processHelpOptionTemplate
             lines.extend(codegen.makeLines(tmpl, poe))
             processed.add(m)
         elif m.type == "info":
             tmpl = processInfoOptionTemplate
             lines.extend(codegen.makeLines(tmpl, poe))
             processed.add(m)
         elif m.type == "multivalue":
             tmpl = processMultivalueOptionTemplate
             lines.extend(codegen.makeLines(tmpl, poe))
         elif m.type == "list" and o.delimiter:
             tmpl = processMultivalueListOptionTemplate
             lines.extend(codegen.makeLines(tmpl, poe))
         elif m.type == "list":
             tmpl = processListOptionTemplate
             lines.extend(codegen.makeLines(tmpl, poe))
         elif m.type != "final":
             tmpl = processOptionTemplate
             lines.extend(codegen.makeLines(tmpl, poe))
     return lines