Pi66

merodi
A markdown-based static site generator.
git clone https://git.pi66.xyz/merodi

src/api.py

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
"""Bridge between merodi core and user plugins"""

class GlobalStore:
    def __init__(self):
        self._data = {}

    def get(self, key, default=None):
        return self._data.get(key, default)

    def set(self, key, value):
        self._data[key] = value

    def has(self, key):
        return key in self._data

    def delete(self, key):
        self._data.pop(key, None)

    def clear(self):
        self._data.clear()

class API:
    def __init__(self):
        self.globals = GlobalStore()
        self.log = None
        self.config = None
        self.mode = "draft"

api = API()

def expose(name):
    def decorator(fn):
        setattr(api, name, fn)
        return fn
    return decorator