Source code for slash.core.details
[docs]class Details(object):
def __init__(self, set_callback=None):
super(Details, self).__init__()
self._details = {}
self._set_callback = set_callback
[docs] def set(self, key, value):
"""Sets a specific detail (by name) to a specific value
"""
if self._set_callback is not None:
self._set_callback(key, value)
self._details[key] = value
[docs] def append(self, key, value):
"""Appends a value to a list key, or creates it if needed
"""
lst = self._details.setdefault(key, [])
if not isinstance(lst, list):
raise TypeError('Cannot append value to a {.__class__.__name__!r} value'.format(lst))
lst.append(value)
if self._set_callback is not None:
self._set_callback(key, lst)
def all(self):
return self._details.copy()
def __nonzero__(self):
return bool(self._details)
__bool__ = __nonzero__
def __contains__(self, key):
return key in self._details