#!/usr/bin/python3 import re class Rule: def __init__(self, *path, **properties): self.path = path self.properties = properties def _f(self, prop): key, value = prop key = re.sub('([A-Z])', '-\\1', key).lower() return ' {}: {};'.format(key, value) def __format__(self): result = ' '.join(self.path) result += ' {\n' result += '\n'.join(map(self._f, self.properties.items())) result += '\n}\n' return result def string(*rules): return '\n'.join(map(lambda r: r.__format__(), rules)) if __name__ == '__main__': print('CSS Demo') print(Rule('.foo', '#blah', backgroundColor='red').__format__())