initial commit
This commit is contained in:
82
scribus_calendar/config_parser.py
Normal file
82
scribus_calendar/config_parser.py
Normal file
@@ -0,0 +1,82 @@
|
||||
|
||||
import json
|
||||
import datetime
|
||||
class ConfigParser(object):
|
||||
def __init__(self, filename):
|
||||
with open(filename, "r") as f:
|
||||
self.jsonContent = json.load(f)
|
||||
self.events = dict()
|
||||
self.settings = dict()
|
||||
|
||||
self.__parseSettings()
|
||||
self.__parseEvents()
|
||||
self.__parseModuleSettings()
|
||||
|
||||
def __parseModuleSettings(self):
|
||||
self.modules = self.jsonContent["modules"]
|
||||
|
||||
def __parseSettings(self):
|
||||
self.settings = self.jsonContent["settings"]
|
||||
|
||||
def __parseDateRange(self, val ):
|
||||
_from = self.__fromisoformat(val["from"])
|
||||
_to = self.__fromisoformat(val["to"])
|
||||
|
||||
val["from"] = _from
|
||||
val["to"] = _to
|
||||
|
||||
def __fromisoformat(self, val):
|
||||
d = val.split("-")
|
||||
if len(d) == 3:
|
||||
return datetime.date(year=int(d[0]), month=int(d[1]), day=int(d[2]))
|
||||
elif len(d) == 2:
|
||||
return datetime.date(year=self.settings["year"], month=int(d[0]), day=int(d[1]))
|
||||
|
||||
|
||||
def __parseEvents(self):
|
||||
self.events = self.jsonContent["events"]
|
||||
for key, val in self.events.items():
|
||||
dates = val["dates"]
|
||||
for ev in dates:
|
||||
self.__parseDateRange(ev)
|
||||
|
||||
def printEvents(self):
|
||||
for key, val in self.events.items():
|
||||
dates = val["dates"]
|
||||
print("%s\n================" % (val["name"]) )
|
||||
for ev in dates:
|
||||
print("from: %s until: %s ---> %s" % (ev["from"], ev["to"], ev["name"]) )
|
||||
|
||||
|
||||
def getEvent(self, date, eventName=None):
|
||||
for key,val in self.events.items():
|
||||
if eventName:
|
||||
if key == eventName:
|
||||
for d in val["dates"]:
|
||||
_from = d["from"]
|
||||
_to = d["to"]
|
||||
if date >= _from and date <= _to:
|
||||
return (key, d)
|
||||
else:
|
||||
for d in val["dates"]:
|
||||
_from = d["from"]
|
||||
_to = d["to"]
|
||||
if date >= _from and date <= _to:
|
||||
return (key, d)
|
||||
|
||||
return None
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
c = ConfigParser("test.json")
|
||||
startDate = datetime.date(2020,1,1)
|
||||
for i in range(0,366):
|
||||
d = startDate + datetime.timedelta(days=i)
|
||||
ev = c.getEvent(d)
|
||||
if ev: print(d, ev[0], ev[1]["name"])
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user