Changeset 200

Show
Ignore:
Timestamp:
05/15/05 09:56:51 (4 years ago)
Author:
athomas
Message:

Added grouping.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • manage/branches/python/CLI.py

    r199 r200  
    1515LABEL = 'LABEL' 
    1616GLOBAL_LABEL = 'GLOBAL_LABEL' 
    17 # Heading label for GROUP 
    18 GROUP_HEADING = 'GROUP_HEADING' 
    19 # Group ordering (numeric value) 
     17# Group ordering ((order, heading) tuple or just heading) 
    2018GROUP = 'GROUP' 
    2119# Override default sort order 
     
    317315                                        return { key : help } 
    318316                                elif htype is types.FunctionType: 
    319                                         return help(self
     317                                        return dict(help(self)
    320318                                else: 
    321319                                        raise TypeError("expected dict, tuple or str for HELP branch, got %s" % htype) 
     
    323321 
    324322                def extract_help(self, grammar): 
    325                         out = [] 
     323                        out = {(9999, None) : []} 
    326324                        grammar = self.copy_grammar_shallow(grammar) 
    327325                        for k in self.sort_grammar_keys(self.filter_grammar(grammar), grammar): 
     326                                group = (9999, None) 
    328327                                v = grammar[k] 
     328                                if type(v) is dict and GROUP in v: 
     329                                        group = v[GROUP] 
     330                                        if type(group) is int: 
     331                                                group = (group, None) 
     332                                        elif type(group) is not tuple: 
     333                                                group = (9999, group) 
     334                                        if group not in out: out[group] = [] 
    329335                                help = None 
    330336                                if _is_command(k): 
     
    342348                                if not help: 
    343349                                        if type(k) is not types.FunctionType: 
    344                                                 out.append([ k, "No HELP for this grammar node." ]) 
     350                                                out[group].append([ k, "No HELP for this grammar node." ]) 
    345351                                else: 
    346352                                        keys = help.keys() 
    347353                                        for k in keys: 
    348                                                 out.append([k, help[k]]) 
     354                                                out[group].append([k, help[k]]) 
    349355                        # Do a real sort? 
    350                         out.sort() 
     356                        for k in out: 
     357                                out[k].sort() 
    351358                        return out 
    352359 
    353360                def candidates(self, grammar): 
    354                         return [x[0] for x in self.extract_help(grammar)] 
     361                        out = [] 
     362                        for group in self.extract_help(grammar).values(): 
     363                                for help in group: 
     364                                        out.append(help[0]) 
     365                        return out 
    355366 
    356367                def executable(self):