flag.py 1.5 KB

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