def _get_meta(header): header = render_markdown(header, meta=True) title = re.findall(r"<h1>(.*)</h1>", header)[0] meta = {"title": title.strip()} items = re.findall(r"<li>(.*?)</li>", header, re.S) for item in items: key, value = item.split(":", 1) meta[key.strip()] = value.strip() return meta
def __init__(self, markdown): """ :type markdown: str """ header, body = re.split(r"\n-{3,}", markdown, 1) self._meta = self._get_meta(header) self.title = self._meta["title"] self.published = StringTime(self._meta["published"]) self.cover = self._meta.get("cover") self.content = render_markdown(body)