MCPcopy Create free account
hub / github.com/etingof/apacheconfig / ApacheConfigLoader

Class ApacheConfigLoader

apacheconfig/loader.py:24–496  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

22
23
24class ApacheConfigLoader(object):
25
26 def __init__(self, parser, debug=False, **options):
27 self._parser = parser
28 self._debug = debug
29 self._options = dict(options)
30 if 'reader' in self._options:
31 self._reader = self._options['reader']
32 else:
33 self._reader = LocalHostReader()
34 self._stack = []
35 self._includes = set()
36 self._ast_cache = {}
37
38 # Code generation rules
39
40 def g_config(self, ast):
41 config = {}
42
43 for subtree in ast:
44 items = self._walkast(subtree)
45 if items:
46 config.update(items)
47
48 return config
49
50 @staticmethod
51 def _unquote_tag(tag):
52 if tag[0] == '"' and tag[-1] == '"':
53 tag = tag[1:-1]
54 if tag[0] == "'" and tag[-1] == "'":
55 tag = tag[1:-1]
56
57 if not tag:
58 raise error.ApacheConfigError('Empty block tag not allowed')
59
60 return tag
61
62 def g_block(self, ast):
63 tag = ast[0]
64 values = {}
65
66 if not self._options.get('namedblocks', True):
67 tag = ("".join(tag),)
68 if len(tag) > 1:
69 name, _, value = tag
70 block = {
71 name: {
72 value: values
73 }
74 }
75 else:
76 tag = self._unquote_tag(tag[0])
77
78 block = {
79 tag: values
80 }
81

Calls

no outgoing calls

Used in the wild real call sites across dependent graphs

searching dependent graphs…