Fixed debugging output
This commit is contained in:
parent
4eedab0e7c
commit
fc04a66869
4 changed files with 73 additions and 10 deletions
|
@ -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):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue