From dbc0ba7236ef8828b2e566cd2aee6a00cc62c049 Mon Sep 17 00:00:00 2001 From: Pablo Hoffman Date: Tue, 7 Sep 2010 14:26:50 -0300 Subject: [PATCH] Added class constructors scrapy.contrib.ibl FieldDescriptor and ItemDescriptor --- scrapy/contrib/ibl/descriptor.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/scrapy/contrib/ibl/descriptor.py b/scrapy/contrib/ibl/descriptor.py index 9780ee0cf..5b4ae99ce 100644 --- a/scrapy/contrib/ibl/descriptor.py +++ b/scrapy/contrib/ibl/descriptor.py @@ -17,6 +17,12 @@ class FieldDescriptor(object): self.required = required self.allow_markup = allow_markup + @classmethod + def from_field(cls, name, field): + return cls(name, field.get('description'), \ + field.get('ibl_extractor', text), field.get('required', False), \ + field.get('allow_markup', False)) + def __str__(self): return "FieldDescriptor(%s)" % self.name @@ -33,6 +39,11 @@ class ItemDescriptor(object): self._required_attributes = [d.name for d in attribute_descriptors \ if d.required] + @classmethod + def from_item(cls, name, description, item): + a = [FieldDescriptor.from_field(n, f) for n, f in item.fields.items()] + return cls(name, description, a) + def validated(self, data): """Only return the items in the data that are valid""" return [d for d in data if self._item_validates(d)]