123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- # -*- 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
- 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
- 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 ""
- 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 ""),
- )
|