Added load/dump methods which work similarly to those found in
simplejson. Tests seem to work so far. Still need to figure out how to get data into the records in some easy way.
This commit is contained in:
parent
a32feb79ed
commit
068f1bbae4
4 changed files with 118 additions and 34 deletions
60
__init__.py
60
__init__.py
|
@ -1,13 +1,4 @@
|
|||
"""
|
||||
from record import SubmitterRecord
|
||||
from record import EmployerRecord
|
||||
from record import EmployeeWageRecord
|
||||
from record import OptionalEmployeeWageRecord
|
||||
from record import TotalRecord
|
||||
from record import OptionalTotalRecord
|
||||
from record import StateTotalRecord
|
||||
from record import FinalRecord
|
||||
"""
|
||||
from record import *
|
||||
|
||||
RECORD_TYPES = [
|
||||
'SubmitterRecord',
|
||||
|
@ -20,8 +11,6 @@ RECORD_TYPES = [
|
|||
'FinalRecord',
|
||||
]
|
||||
|
||||
|
||||
|
||||
def test():
|
||||
import record, model
|
||||
for rname in RECORD_TYPES:
|
||||
|
@ -29,6 +18,53 @@ def test():
|
|||
print type(inst), len(inst.output())
|
||||
|
||||
|
||||
def test_dump():
|
||||
import record, StringIO
|
||||
records = [
|
||||
record.SubmitterRecord(),
|
||||
record.EmployerRecord(),
|
||||
record.EmployeeWageRecord(),
|
||||
]
|
||||
out = StringIO.StringIO()
|
||||
dump(records, out)
|
||||
return out
|
||||
|
||||
|
||||
def test_load(fp):
|
||||
return load(fp)
|
||||
|
||||
def load(fp):
|
||||
# BUILD LIST OF RECORD TYPES
|
||||
import record
|
||||
types = {}
|
||||
for r in RECORD_TYPES:
|
||||
klass = record.__dict__[r]
|
||||
types[klass.record_identifier] = klass
|
||||
|
||||
# PARSE DATA INTO RECORDS AND YIELD THEM
|
||||
while fp.tell() < fp.len:
|
||||
record_ident = fp.read(2)
|
||||
if record_ident in types:
|
||||
record = types[record_ident]()
|
||||
record.read(fp)
|
||||
yield record
|
||||
|
||||
|
||||
def loads(s):
|
||||
import StringIO
|
||||
fp = StringIO.StringIO(s)
|
||||
return load(fp)
|
||||
|
||||
|
||||
def dump(records, fp):
|
||||
for r in records:
|
||||
fp.write(r.output())
|
||||
|
||||
|
||||
def dumps(records):
|
||||
import StringIO
|
||||
fp = StringIO.StringIO()
|
||||
dump(records, fp)
|
||||
fp.seek(0)
|
||||
return fp.read()
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue