# sifc - a tiny python sif parser # version: 0.3 def parse_arr(string: str) -> list: """parses a sif string as an array""" out, current = [], None for l in string.strip().split('\n'): if not l.strip() or l.strip().startswith('#'): continue if l.startswith(' ') and current is not None: out[-1][1] += '\n' + (l[1:] if l[1] == ' ' else l.strip()) else: k, v = l.split('=', 1) out.append([k.strip(), v.strip()]) current = k.strip() return out def parse(string: str) -> dict: """parses a sif string as an object""" out = {} for k, v in parse_arr(string): out[k] = v return out def dump(obj: dict) -> str: """dumps a dictionary as a sif string""" out = "" for k, v in obj.items(): v = v.replace('\n', '\n ') out += f"{k} = {v}\n" return out