Fixed debugging output

This commit is contained in:
Binh 2014-02-01 12:52:44 -06:00
parent 4eedab0e7c
commit fc04a66869
4 changed files with 73 additions and 10 deletions

View file

@ -17,13 +17,14 @@ class ValidationError(Exception):
class Field(object):
creation_counter = 0
def __init__(self, name=None, max_length=0, required=True, uppercase=True):
def __init__(self, name=None, max_length=0, required=True, uppercase=True, creation_counter=None):
self.name = name
self._value = None
self._orig_value = None
self.max_length = max_length
self.required = required
self.uppercase = uppercase
self.creation_counter = Field.creation_counter
self.creation_counter = creation_counter or Field.creation_counter
Field.creation_counter += 1
def validate(self):
@ -38,13 +39,17 @@ class Field(object):
def __getvalue(self):
return self._value
def __len__(self):
return self.max_length
value = property(__getvalue, __setvalue)
def read(self, fp):
if fp.tell() + self.max_length <= fp.len:
data = fp.read(self.max_length)
data = fp.read(self.max_length)
if len(data) == self.max_length:
self._orig_value = data
return self.parse(data)
return None
raise ValueError()
def parse(self, s):
self.value = s.strip()
@ -77,6 +82,36 @@ class Field(object):
self.value = o['value']
return self
def debug(self, counter):
import textwrap
value = (self._orig_value or str(self.value))
wrapper = textwrap.TextWrapper(replace_whitespace=False, drop_whitespace=False)
wrapper.width = 100
value = wrapper.wrap(value)
#value = textwrap.wrap(value, 100)
#print value
value = list(map(lambda x:(" " * 9) + ('"' + x + '"'), value))
#value[0] = '"' + value[0] + '"'
value.append(" " * 10 + ('_' * 10) * (wrapper.width / 10))
value.append(" " * 10 + ('0123456789') * (wrapper.width / 10))
value.append(" " * 10 + ''.join((map(lambda x:str(x) + (' ' * 9), range(wrapper.width / 10 )))))
#value.append((" " * 59) + map(lambda x:("%x" % x), range(16))
start = counter['c']
counter['c'] += len(self._orig_value or self.value)
end = counter['c']
return (
str(start) + '-' + str(end-1) +
' [' +
str(len(self._orig_value or '') or len(str(self.value))) +
'] ' + self.name +
'\n' +
'\n'.join(value)
)
class TextField(Field):
def validate(self):