Make OnepifReader return OnepifEntry objects. (Simulate dicts at the moment.)
This commit is contained in:
parent
ae8e35a41d
commit
785425d613
25
onepif/OnepifEntry.py
Normal file
25
onepif/OnepifEntry.py
Normal file
@ -0,0 +1,25 @@
|
||||
class OnepifEntry():
|
||||
|
||||
def __init__(self, data):
|
||||
self.raw = data
|
||||
|
||||
def __getattr__(self, name):
|
||||
if name not in self.raw:
|
||||
raise AttributeError
|
||||
return self.raw[name]
|
||||
|
||||
def __getitem__(self, key):
|
||||
if self.__missing__(key):
|
||||
raise KeyError
|
||||
return self.raw[key]
|
||||
|
||||
def __contains__(self, item):
|
||||
return item in self.raw
|
||||
|
||||
def __missing__(self, key):
|
||||
return key not in self.raw
|
||||
|
||||
def get(self, key):
|
||||
if key not in self.raw:
|
||||
return None
|
||||
return self.raw[key]
|
@ -1,4 +1,5 @@
|
||||
import json
|
||||
from . import OnepifEntry
|
||||
|
||||
SEPARATOR = "***5642bee8-a5ff-11dc-8314-0800200c9a66***"
|
||||
|
||||
@ -13,6 +14,14 @@ class OnepifReader():
|
||||
return self
|
||||
|
||||
def __next__(self):
|
||||
raw_entry = self.get_next_json()
|
||||
if not raw_entry:
|
||||
raise StopIteration
|
||||
obj_dict = self.parse_into_dict(raw_entry)
|
||||
op_entry = OnepifEntry.OnepifEntry(obj_dict)
|
||||
return op_entry
|
||||
|
||||
def get_next_json(self):
|
||||
buffer = []
|
||||
is_eof = True
|
||||
for line in self.fp:
|
||||
@ -21,6 +30,9 @@ class OnepifReader():
|
||||
break
|
||||
buffer.append(line)
|
||||
if is_eof:
|
||||
raise StopIteration
|
||||
jsonstr = "".join(buffer)
|
||||
return json.loads(jsonstr)
|
||||
return False
|
||||
json_str = "".join(buffer)
|
||||
return json_str
|
||||
|
||||
def parse_into_dict(self, raw_entry):
|
||||
return json.loads(raw_entry)
|
||||
|
Loading…
x
Reference in New Issue
Block a user