Source code for posty.renderer.json

from __future__ import absolute_import

import json
import os

from .base import Renderer
from .util import markdown


[docs]class JsonRenderer(Renderer): """ Renderer that outputs a JSON representation of the Site to ``site.json`` within the output directory """
[docs] def render_site(self): """ Render the Site to ``site.json`` """ self.ensure_output_path() json_path = os.path.join(self.output_path, 'site.json') payload = { 'pages': [], 'posts': [], } for page in self.site.payload['pages']: p = page.as_dict() p['body'] = markdown(p['body']) payload['pages'].append(p) for post in self.site.payload['posts']: p = post.as_dict() p['blurb'] = markdown(p['blurb']) p['body'] = markdown(p['body']) p['date'] = post['date'].isoformat() payload['posts'].append(p) for k, v in self.site.payload.items(): if k not in {'posts', 'pages'}: payload[k] = v with open(json_path, 'w') as f: f.write(json.dumps(payload))