def render(self, context): morsel = Morsel.objects.get_for_current(context, self.name, self.inherit) if morsel is None: return u'' if self.as_var: context[self.as_var] = morsel return u'' return mark_safe(typogrify(morsel.content))
def get_fragments(self): if self._fragment_cache is not None: return self._fragment_cache with self.context.open_source_file() as f: self.get_header(f) rv = self.context.render_rst(f.read().decode('utf-8')) rv['fragment'] = Markup(typogrify.typogrify(rv['fragment'])) self._fragment_cache = rv return rv
def render(self, context): try: import markdown import typogrify except ImportError: print u"`includetext` requires Markdown and Typogrify." raise output = self.include_node.render(context) output = markdown.markdown(output) output = typogrify.typogrify(output) return output
def render_html(text): '''Render Markdown to HTML in three steps: 1. Render as Jinja2 template string (executing macros) => Markdown 2. Render as Markdown => HTML 3. Typogrify => Nicer HTML (if typogrify is available) ''' md = render_template_string(text) html = markdown(md, extensions=app.config['MARKDOWN_EXTENSIONS']) try: from typogrify import typogrify return typogrify(html) except ImportError: return html
def __init__(self, description): self.description = typogrify(escape(description[0:250])) # Well, so long as your thing takes up less than 250 bytes. self.key = 'thing:%s' % self.description if Redis.server.zscore('things:score', self.description) is not None: self.better, self.worse, self.score = Redis.pipe.hget(self.key, 'better').hget(self.key, 'worse').zscore('things:score', self.description).execute() self.better = int(self.better) self.worse = int(self.worse) self.total_votes = self.better + self.worse self.score = float(self.score) else: self.better = 0 self.worse = 0 self.total_votes = 0 self.score = float(0) self.save()
def render(self, renderer, site_context): view = TemplateView() if self.page_layout_path: view.template_rel_path = self.page_layout else: view.template = self.page_content part = renderer.render(view, self.context, site=site_context) if self.is_markdown(): part = markdown.markdown(part) part = typogrify.typogrify(part) page_context = {u'content': part} self.rendered_content = part page_context.update(self.context) view = TemplateView() view.template_rel_path = self.layout page = renderer.render(view, self.context, page=page_context, site=site_context) self.rendered_page = page
code{background:#ddd;font:100%%/0 Monaco,monospace} h1{font-size:2em;font-weight:bold;line-height:1.5em;padding:0 0 0.75em;page-break-after:avoid} h2{font-size:1.5em;font-weight:bold;line-height:2em;page-break-after:avoid} h3{font-size:1.2em;font-weight:bold;line-height:1.25em;padding:0.625em 0;page-break-after:avoid} p,ul,ol,.address{padding:0 0 1.5em} ul,ol{padding-left:1.5em} pre{background:#ddd;border:1px solid #bbb;font:100%%/1.5 Monaco,monospace;margin:-2px -1px 1.5em;padding:1.5em} .address span{display:block} </style> </head> <body>""" FOOTER = """</body></html>""" if __name__ == '__main__': if (len(sys.argv) > 1): filename = sys.argv[1] in_file = codecs.open(filename, encoding='utf-8') md = in_file.read() in_file.close() title = os.path.basename(filename) content = typogrify.typogrify( markdown.markdown(md, ['abbr', 'headerid'])) out_file = codecs.open(filename + '.html', encoding='utf-8', mode='w+') out_file.write((HEADER % title) + content + FOOTER) out_file.close() else: print u'Filename not supplied.'
def render(self, context): morsel = Morsel.objects.get_for_current(context, self.name, self.inherit) if getattr(settings, 'MORSELS_USE_JEDITABLE', False): js = """ <script type="text/javascript"> if(typeof(jQuery)=='undefined') { document.write('<script type="text/javascript" src="%sjquery.js"></' + 'script>'); } </script> <script type="text/javascript" src="%sjquery.jeditable.js"></script> <script type="text/javascript"> jQuery(document).ready(function(){ jQuery('.jeditable-morsel').each(function(i){ jQuery(this).editable(jQuery(this).attr('rel'), { type : 'textarea', cancel : 'Cancel', submit : 'OK', indicator : 'Saving...', tooltip : 'Double-click to edit...', event : 'dblclick', loadurl : '%s', onblur : 'ignore' }); }); }); </script> """ % (settings.MORSELS_JAVASCRIPT_PATH, settings.MORSELS_JAVASCRIPT_PATH, reverse('morsels_ajax_load', None, (urllib.quote(context['request'].path, safe=''), ))) if self.JS_SIGNAL in context['messages']: js = "" if morsel is None: return u'' if self.as_var: context[self.as_var] = morsel return u'' output = typogrify(morsel.content) if getattr(settings, 'MORSELS_USE_JEDITABLE', False) and context['user'].is_authenticated(): output = '%s<div class="jeditable-morsel" id="%s" rel="%s"><div class="jeditable-morsel-label"></div>%s</div>' % ( js, self.name, reverse('morsels_ajax_save', None, (urllib.quote(context['request'].path, safe=''), )), output) context['messages'].append(self.JS_SIGNAL) output_template = Template(output) rendered_output = mark_safe(output_template.render(context)) if self.glossarize: rendered_output = glossary.helpers.glossarize_in_context( rendered_output, context, morsel.page.sector) return rendered_output
def typogrify_filter(s): return Markup(typogrify.typogrify(s))