renamed ItemField to Field for upcoming ItemExtractor and FieldExtractor

--HG--
extra : convert_revision : svn%3Ab85faa78-f9eb-468e-a121-7cced6da292c%40882
This commit is contained in:
Ismael Carnales 2009-02-19 14:46:23 +00:00
parent 7fc8d590f3
commit 26bcc826e3
2 changed files with 19 additions and 19 deletions

View File

@ -3,15 +3,15 @@ import decimal
import re import re
__all__ = ['BooleanItemField', 'DateItemField', 'DecimalItemField', __all__ = ['BooleanField', 'DateField', 'DecimalField',
'FloatItemField', 'IntegerItemField', 'StringItemField'] 'FloatField', 'IntegerField', 'StringField']
class ItemFieldValueError(Exception): class FieldValueError(Exception):
pass pass
class ItemField(object): class Field(object):
def __init__(self, required=False, default=None): def __init__(self, required=False, default=None):
self.required = required self.required = required
self.default = default or self.to_python(None) self.default = default or self.to_python(None)
@ -34,18 +34,18 @@ class ItemField(object):
return ' '.join(value) return ' '.join(value)
class BooleanItemField(ItemField): class BooleanField(Field):
def to_python(self, value): def to_python(self, value):
if value in (True, False): return value if value in (True, False): return value
if value in ('t', 'True', '1'): return True if value in ('t', 'True', '1'): return True
if value in ('f', 'False', '0'): return False if value in ('f', 'False', '0'): return False
raise ItemFieldValueError("This value must be either True or False.") raise FieldValueError("This value must be either True or False.")
ansi_date_re = re.compile(r'^\d{4}-\d{1,2}-\d{1,2}$') ansi_date_re = re.compile(r'^\d{4}-\d{1,2}-\d{1,2}$')
class DateItemField(ItemField): class DateField(Field):
def to_python(self, value): def to_python(self, value):
if value is None: if value is None:
return value return value
@ -55,51 +55,51 @@ class DateItemField(ItemField):
return value return value
if not ansi_date_re.search(value): if not ansi_date_re.search(value):
raise ItemFieldValueError( raise FieldValueError(
"Enter a valid date in YYYY-MM-DD format.") "Enter a valid date in YYYY-MM-DD format.")
year, month, day = map(int, value.split('-')) year, month, day = map(int, value.split('-'))
try: try:
return datetime.date(year, month, day) return datetime.date(year, month, day)
except ValueError, e: except ValueError, e:
raise ItemFieldValueError("Invalid date: %s" % str(e)) raise FieldValueError("Invalid date: %s" % str(e))
class DecimalItemField(ItemField): class DecimalField(Field):
def to_python(self, value): def to_python(self, value):
if value is None: if value is None:
return value return value
try: try:
return decimal.Decimal(value) return decimal.Decimal(value)
except decimal.InvalidOperation: except decimal.InvalidOperation:
raise ItemFieldValueError("This value must be a decimal number.") raise FieldValueError("This value must be a decimal number.")
class FloatItemField(ItemField): class FloatField(Field):
def to_python(self, value): def to_python(self, value):
if value is None: if value is None:
return value return value
try: try:
return float(value) return float(value)
except (TypeError, ValueError): except (TypeError, ValueError):
raise ItemFieldValueError("This value must be a float.") raise FieldValueError("This value must be a float.")
class IntegerItemField(ItemField): class IntegerField(Field):
def to_python(self, value): def to_python(self, value):
if value is None: if value is None:
return value return value
try: try:
return int(value) return int(value)
except (TypeError, ValueError): except (TypeError, ValueError):
raise ItemFieldValueError("This value must be an integer.") raise FieldValueError("This value must be an integer.")
class StringItemField(ItemField): class StringField(Field):
def to_python(self, value): def to_python(self, value):
if isinstance(value, basestring): if isinstance(value, basestring):
return value return value
if value is None: if value is None:
return value return value
raise ItemFieldValueError("This field must be a string.") raise FieldValueError("This field must be a string.")

View File

@ -1,4 +1,4 @@
from scrapy.contrib_exp.newitem.fields import ItemField from scrapy.contrib_exp.newitem.fields import Field
class Item(object): class Item(object):
@ -12,7 +12,7 @@ class Item(object):
def _get_fields(self): def _get_fields(self):
return dict(i for i in self.__class__.__dict__.iteritems() \ return dict(i for i in self.__class__.__dict__.iteritems() \
if isinstance(i[1], ItemField)) if isinstance(i[1], Field))
def __setattr__(self, name, value): def __setattr__(self, name, value):
if not name.startswith('_'): if not name.startswith('_'):