Source code for pygrass.modules.interface.flag
# -*- coding: utf-8 -*-
from __future__ import (nested_scopes, generators, division, absolute_import,
with_statement, print_function, unicode_literals)
from grass.pygrass.modules.interface.docstring import docstring_property
from grass.pygrass.modules.interface import read
[docs]class Flag(object):
"""The Flag object store all information about a flag of module.
It is possible to set flags of command using this object.
>>> flag = Flag(diz=dict(name='a', description='Flag description',
... default=True))
>>> flag.name
'a'
>>> flag.special
False
>>> flag.description
'Flag description'
>>> flag = Flag(diz=dict(name='overwrite'))
>>> flag.name
'overwrite'
>>> flag.special
True
"""
def __init__(self, xflag=None, diz=None):
self.value = False
diz = read.element2dict(xflag) if xflag is not None else diz
self.name = diz['name']
self.special = True if self.name in (
'verbose', 'overwrite', 'quiet', 'run') else False
self.description = diz.get('description', None)
self.default = diz.get('default', None)
self.guisection = diz.get('guisection', None)
self.suppress_required = True if 'suppress_required' in diz else False
[docs] def get_bash(self):
"""Return the BASH representation of a flag.
>>> flag = Flag(diz=dict(name='a', description='Flag description',
... default=True))
>>> flag.get_bash()
''
>>> flag.value = True
>>> flag.get_bash()
'-a'
>>> flag = Flag(diz=dict(name='overwrite'))
>>> flag.get_bash()
''
>>> flag.value = True
>>> flag.get_bash()
'--o'
"""
if self.value:
if self.special:
return '--%s' % self.name[0]
else:
return '-%s' % self.name
else:
return ''
[docs] def get_python(self):
"""Return the python representation of a flag.
>>> flag = Flag(diz=dict(name='a', description='Flag description',
... default=True))
>>> flag.get_python()
''
>>> flag.value = True
>>> flag.get_python()
'a'
>>> flag = Flag(diz=dict(name='overwrite'))
>>> flag.get_python()
''
>>> flag.value = True
>>> flag.get_python()
'overwrite=True'
"""
if self.value:
return '%s=True' % self.name if self.special else self.name
return ''
def __str__(self):
"""Return the BASH representation of the flag."""
return self.get_bash()
def __repr__(self):
"""Return a string with the python representation of the instance."""
return "Flag <%s> (%s)" % (self.name, self.description)
def __bool__(self):
"""Return a boolean value"""
return self.value
def __nonzero__(self):
return self.__bool__()
@docstring_property(__doc__)
def __doc__(self):
"""Return a documentation string, something like:
{name}: {default}, suppress required {supress}
{description}
>>> flag = Flag(diz=dict(name='a', description='Flag description',
... default=True))
>>> print(flag.__doc__)
a: True
Flag description
>>> flag = Flag(diz=dict(name='overwrite'))
>>> print(flag.__doc__)
overwrite: None
None
"""
return read.DOC['flag'].format(name=self.name,
default=repr(self.default),
description=self.description,
supress=('suppress required'
if self.suppress_required
else ''))