Mercurial > hg > CommandParser
comparison commandparser/command.py @ 10:a3599e4db9a4
python 2.4 compatability
| author | Jeff Hammel <jhammel@mozilla.com> |
|---|---|
| date | Mon, 02 Apr 2012 10:21:59 -0700 |
| parents | 0069096e8e22 |
| children | e0a3148e67a8 |
comparison
equal
deleted
inserted
replaced
| 9:0069096e8e22 | 10:a3599e4db9a4 |
|---|---|
| 10 | 10 |
| 11 try: | 11 try: |
| 12 import json | 12 import json |
| 13 except ImportError: | 13 except ImportError: |
| 14 import simplejson as json | 14 import simplejson as json |
| 15 | |
| 16 # BBB python 2.4 | |
| 17 cleandoc = getattr(inspect, 'cleandoc', lambda x: x.strip()) | |
| 15 | 18 |
| 16 __all__ = ['Undefined', 'CommandParser'] | 19 __all__ = ['Undefined', 'CommandParser'] |
| 17 | 20 |
| 18 class Undefined(object): | 21 class Undefined(object): |
| 19 def __init__(self, default): | 22 def __init__(self, default): |
| 157 return retval | 160 return retval |
| 158 | 161 |
| 159 def command(self, function): | 162 def command(self, function): |
| 160 name = function.func_name | 163 name = function.func_name |
| 161 if function.__doc__: | 164 if function.__doc__: |
| 162 doc = inspect.cleandoc(function.__doc__) | 165 doc = cleandoc(function.__doc__) |
| 163 else: | 166 else: |
| 164 doc = '' | 167 doc = '' |
| 165 argspec = inspect.getargspec(function) | 168 args, varargs, varkw, defaults = inspect.getargspec(function) |
| 166 defaults = argspec.defaults | |
| 167 if defaults: | 169 if defaults: |
| 168 args = argspec.args[1:-len(defaults)] | 170 args = args[1:-len(defaults)] |
| 169 optional = dict(zip(argspec.args[-len(defaults):], defaults)) | 171 optional = dict(zip(args[-len(defaults):], defaults)) |
| 170 else: | 172 else: |
| 171 args = argspec.args[1:] | 173 args = args[1:] |
| 172 optional = None | 174 optional = None |
| 173 command = {'doc': doc, | 175 command = {'doc': doc, |
| 174 'name': name, | 176 'name': name, |
| 175 'args': args, | 177 'args': args, |
| 176 'optional': optional, | 178 'optional': optional, |
| 177 'varargs': argspec.varargs | 179 'varargs': varargs |
| 178 } | 180 } |
| 179 return command | 181 return command |
| 180 | 182 |
| 181 def commandargs2str(self, command): | 183 def commandargs2str(self, command): |
| 182 if isinstance(command, basestring): | 184 if isinstance(command, basestring): |
