X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/084544e4f7c9269b1445a9e5109fa641a3e1aaac..f02b9f60518805daed701834903e4f8e82fee778:/apps/wiki/models.py?ds=inline diff --git a/apps/wiki/models.py b/apps/wiki/models.py index 2809dbc5..7693da4e 100644 --- a/apps/wiki/models.py +++ b/apps/wiki/models.py @@ -1,3 +1,4 @@ +import re import vstorage from vstorage import DocumentNotFound from wiki import settings @@ -28,6 +29,8 @@ class DocumentStorage(object): class Document(object): + META_REGEX = re.compile(r'\s*', re.DOTALL | re.MULTILINE) + def __init__(self, storage, **kwargs): self.storage = storage for attr, value in kwargs.iteritems(): @@ -39,6 +42,23 @@ class Document(object): except DocumentNotFound: return -1 + def plain_text(self): + return re.sub(self.META_REGEX, '', self.text, 1) + + def meta(self): + result = {} + + m = re.match(self.META_REGEX, self.text) + if m: + for line in m.group(1).split('\n'): + try: + k, v = line.split(':', 1) + result[k.strip()] = v.strip() + except ValueError: + continue + + return result + storage = DocumentStorage(settings.REPOSITORY_PATH)