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
|
import json
|
||||||
|
from . import OnepifEntry
|
||||||
|
|
||||||
SEPARATOR = "***5642bee8-a5ff-11dc-8314-0800200c9a66***"
|
SEPARATOR = "***5642bee8-a5ff-11dc-8314-0800200c9a66***"
|
||||||
|
|
||||||
@ -13,6 +14,14 @@ class OnepifReader():
|
|||||||
return self
|
return self
|
||||||
|
|
||||||
def __next__(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 = []
|
buffer = []
|
||||||
is_eof = True
|
is_eof = True
|
||||||
for line in self.fp:
|
for line in self.fp:
|
||||||
@ -21,6 +30,9 @@ class OnepifReader():
|
|||||||
break
|
break
|
||||||
buffer.append(line)
|
buffer.append(line)
|
||||||
if is_eof:
|
if is_eof:
|
||||||
raise StopIteration
|
return False
|
||||||
jsonstr = "".join(buffer)
|
json_str = "".join(buffer)
|
||||||
return json.loads(jsonstr)
|
return json_str
|
||||||
|
|
||||||
|
def parse_into_dict(self, raw_entry):
|
||||||
|
return json.loads(raw_entry)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user