Add very hacky level loading.
[tabakrolletjie.git] / tabakrolletjie / loader.py
1 """ Utilities for loading resource files. """
2
3 import json
4 import os
5
6
7 class Loader(object):
8     """ Load data files from beneath a prefix. """
9
10     def __init__(self, prefix):
11         self._prefix = prefix
12
13     def full_path(self, *parts):
14         path = "/".join(parts)
15         rel_path = os.path.join(*path.split("/"))
16         abs_path = os.path.join(self._prefix, rel_path)
17         print abs_path
18         return abs_path
19
20     def open_file(self, *parts):
21         return file(self.full_path(*parts), "rb")
22
23     def load_station(self, *parts):
24         with self.open_file("stations", *parts) as f:
25             return json.load(f)
26
27
28 _DATA_PREFIX = os.path.abspath(
29     os.path.join(os.path.dirname(__file__), "..", "data"))
30
31 loader = Loader(_DATA_PREFIX)