flag.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Tue Apr 2 18:39:21 2013
  4. @author: pietro
  5. """
  6. from read import element2dict
  7. class Flag(object):
  8. def __init__(self, xflag=None, diz=None):
  9. self.value = False
  10. diz = element2dict(xflag) if xflag is not None else diz
  11. self.name = diz['name']
  12. self.special = True if self.name in (
  13. 'verbose', 'overwrite', 'quiet', 'run') else False
  14. self.description = diz['description']
  15. self.default = diz.get('default', None)
  16. self.guisection = diz.get('guisection', None)
  17. def get_bash(self):
  18. if self.value:
  19. if self.special:
  20. return '--%s' % self.name[0]
  21. else:
  22. return '-%s' % self.name
  23. else:
  24. return ''
  25. def get_python(self):
  26. if self.value:
  27. if self.special:
  28. return '%s=True' % self.name
  29. else:
  30. return self.name
  31. else:
  32. return ''
  33. def __str__(self):
  34. return self.get_bash()
  35. def __repr__(self):
  36. return "Flag <%s> (%s)" % (self.name, self.description)
  37. @property
  38. def __doc__(self):
  39. """
  40. {name}: {default}
  41. {description}"""
  42. return _DOC['flag'].format(name=self.name,
  43. default=repr(self.default),
  44. description=self.description)