Files
gig/factory.py
2025-08-05 01:10:28 +01:00

48 lines
1.4 KiB
Python

# factory.py
import events
from item import Item
class MakeItems:
def __new__(cls, config):
items = {}
for item in config:
kwargs = {}
for key in config[item].keys():
if key == 'events':
kwargs[key] = MakeEvents(config[item][key])
else:
kwargs[key] = config[item][key]
items[item] = Item(**kwargs)
if hasattr(items[item], 'prepare'):
items[item].prepare()
return items
class MakeEvents:
def __new__(cls, config):
objects = []
for x in config:
for key in x:
args = []
kwargs = {}
if isinstance(x[key], list):
args = x[key]
elif isinstance(x[key], dict):
kwargs = x[key]
elif x[key] is None:
pass
else:
args[0] = x[key]
obj = getattr(events, key)(*args, **kwargs)
objects.append(obj)
return objects
# This just returns an array for now, we'll see if we need to make it into a class later.
class MakeSet:
def __new__(cls, config, items):
for item in config:
if item not in items:
raise KeyError('{} not in items'.format(item))
return config