aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'roverlay/ebuild/abstractcomponents.py')
-rw-r--r--roverlay/ebuild/abstractcomponents.py36
1 files changed, 34 insertions, 2 deletions
diff --git a/roverlay/ebuild/abstractcomponents.py b/roverlay/ebuild/abstractcomponents.py
index 73dac03..019c252 100644
--- a/roverlay/ebuild/abstractcomponents.py
+++ b/roverlay/ebuild/abstractcomponents.py
@@ -5,11 +5,23 @@
INDENT = '\t'
def listlike ( ref ):
+ """Returns True if ref is listlike (a non-str iterable)."""
return hasattr ( ref, '__iter__' ) and not isinstance ( ref, str )
class ListValue ( object ):
+ """An evar value with a list of elements."""
def __init__ ( self, value, indent_level=1, empty_value=None ):
+ """Initializes a ListValue.
+
+ arguments:
+ * value --
+ * indent_level -- indention level ('\t') for extra value lines
+ * empty_value -- if set: a string value that is always part
+ of this ListValue's elements but ignored
+ by len().
+ Use cases are '${IUSE:-}' in the IUSE var etc.
+ """
self.set_level ( indent_level )
self.empty_value = empty_value
@@ -23,13 +35,14 @@ class ListValue ( object ):
self.val_join = ' '
self.set_value ( value )
-
+ # --- end of __init__ (...) ---
def __len__ ( self ):
l = len ( self.value )
return l if self.empty_value is None else l - 1
def set_level ( self, level ):
+ """Sets the indention level."""
self.level = level
self.var_indent = (level - 1) * INDENT
self.val_indent = level * INDENT
@@ -37,6 +50,7 @@ class ListValue ( object ):
# --- end of set_level (...) ---
def set_value ( self, value ):
+ """Sets the value."""
self.value = list()
if self.empty_value is not None:
self.value.append ( self.empty_value )
@@ -44,6 +58,7 @@ class ListValue ( object ):
# --- end of set_value (...) ---
def add_value ( self, value ):
+ """Adds/Appends a value."""
if value is None:
pass
elif listlike ( value ):
@@ -55,6 +70,7 @@ class ListValue ( object ):
add = add_value
def to_str ( self ):
+ """Returns a string representing this ListValue."""
if len ( self.value ) == 0:
ret = ""
elif len ( self.value ) == 1:
@@ -73,21 +89,37 @@ class ListValue ( object ):
class EbuildVar ( object ):
+ """An ebuild variable."""
def __init__ ( self, name, value, priority ):
+ """Initializes an EbuildVar.
+
+ arguments:
+ * name -- e.g. 'SRC_URI'
+ * value --
+ * priority -- used for sorting (e.g. 'R_SUGGESTS' before 'DEPEND'),
+ lower means higher priority
+ """
self.name = name
self.priority = priority
self.value = value
self.set_level ( 0 )
def set_level ( self, level ):
+ """Sets the indention level."""
self.level = level
self.indent = self.level * INDENT
if hasattr ( self.value, 'set_level' ):
self.value.set_level ( level + 1 )
# --- end of set_level (...) ---
- def active ( self ): return True
+ def active ( self ):
+ """Returns True if this EbuildVar is enabled and has a string to
+ return.
+ (EbuildVar's active() returns always True, derived classes may
+ override this.)
+ """
+ return True
def __str__ ( self ):
return '%s%s="%s"' % ( self.indent, self.name, self.value )