Blame view

flaskr/content.py 1.05 KB
809d6747   Antoine Goutenoir   Structure the con...
1
from collections import namedtuple
35a99ac7   Goutte   Move more text co...
2
3
from yaml import safe_load as yaml_safe_load

bf3a1089   Antoine Goutenoir   Clean up.
4

35a99ac7   Goutte   Move more text co...
5
with open('content.yml', 'r') as content_file:
809d6747   Antoine Goutenoir   Structure the con...
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    content_dict = yaml_safe_load(content_file.read())


class Struct(object):
    def __new__(cls, data):
        if isinstance(data, dict):
            return namedtuple(
                'Struct', data.iterkeys()
            )(
                *(Struct(val) for val in data.values())
            )
        elif isinstance(data, (tuple, list, set, frozenset)):
            return type(data)(Struct(_) for _ in data)
        else:
            return data


content = Struct(content_dict)

d8a2ae6b   Antoine Goutenoir   Provide configura...
25

809d6747   Antoine Goutenoir   Structure the con...
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# For Python3?
# def dict2obj(d):
#     """
#     Convert a dict to an object
#
#     >>> d = {'a': 1, 'b': {'c': 2}, 'd': ["hi", {'foo': "bar"}]}
#     >>> obj = dict2obj(d)
#     >>> obj.b.c
#     2
#     >>> obj.d
#     ["hi", {'foo': "bar"}]
#     """
#     try:
#         d = dict(d)
#     except (TypeError, ValueError):
#         return d
#     obj = Object()
#     for k, v in d.iteritems():
#         obj.__dict__[k] = dict2obj(v)
#     return obj