mirror of
https://github.com/kennethreitz/tablib.git
synced 2026-06-05 23:10:17 +00:00
Separator append and insert support.
This commit is contained in:
+46
-1
@@ -20,6 +20,9 @@ class Dataset(object):
|
||||
def __init__(self, *args, **kwargs):
|
||||
self._data = list(args)
|
||||
self.__headers = None
|
||||
|
||||
# ('title', index) tuples
|
||||
self._seperators = []
|
||||
|
||||
try:
|
||||
self.headers = kwargs['headers']
|
||||
@@ -194,6 +197,23 @@ class Dataset(object):
|
||||
self._data = [tuple([row]) for row in col]
|
||||
|
||||
|
||||
def insert_seperator(self, index, text='-'):
|
||||
"""Adds a seperator to Dataset at given index."""
|
||||
|
||||
if self.height >= index:
|
||||
sep = (index, text)
|
||||
self._seperators.append(sep)
|
||||
else:
|
||||
raise InvalidDimensions
|
||||
|
||||
|
||||
def append_seperator(self, text='-'):
|
||||
"""Adds a seperator to Dataset."""
|
||||
|
||||
index = self.height if self.headers else (self.height - 1)
|
||||
self.insert_seperator(index, text)
|
||||
|
||||
|
||||
def insert(self, i, row=None, col=None):
|
||||
"""Inserts a row at given position in Dataset"""
|
||||
if row:
|
||||
@@ -225,9 +245,11 @@ class Databook(object):
|
||||
except AttributeError:
|
||||
return '<databook object>'
|
||||
|
||||
|
||||
def wipe(self):
|
||||
"""Wipe book clean."""
|
||||
self._datasets = []
|
||||
|
||||
|
||||
@classmethod
|
||||
def _register_formats(cls):
|
||||
@@ -249,7 +271,7 @@ class Databook(object):
|
||||
self._datasets.append(dataset)
|
||||
else:
|
||||
raise InvalidDatasetType
|
||||
|
||||
|
||||
|
||||
def _package(self):
|
||||
"""Packages Databook for delivery."""
|
||||
@@ -268,6 +290,29 @@ class Databook(object):
|
||||
return len(self._datasets)
|
||||
|
||||
|
||||
def detect(stream):
|
||||
"""Return (format, stream) of given stream."""
|
||||
for fmt in formats:
|
||||
try:
|
||||
if fmt.detect(stream):
|
||||
return (fmt, stream)
|
||||
except AttributeError:
|
||||
pass
|
||||
return (None, stream)
|
||||
|
||||
|
||||
def import_set(stream):
|
||||
"""Return dataset of given stream."""
|
||||
(format, stream) = detect(stream)
|
||||
|
||||
try:
|
||||
data = Dataset()
|
||||
format.import_set(data, stream)
|
||||
return data
|
||||
|
||||
except AttributeError, e:
|
||||
return None
|
||||
|
||||
|
||||
class InvalidDatasetType(Exception):
|
||||
"Only Datasets can be added to a DataBook"
|
||||
|
||||
Reference in New Issue
Block a user