summaryrefslogtreecommitdiff
path: root/pastepy.py
diff options
context:
space:
mode:
Diffstat (limited to 'pastepy.py')
-rw-r--r--pastepy.py37
1 files changed, 28 insertions, 9 deletions
diff --git a/pastepy.py b/pastepy.py
index 25d8746..5e0e404 100644
--- a/pastepy.py
+++ b/pastepy.py
@@ -9,6 +9,11 @@ import random
import settings
import templates
+try:
+ import markdown
+ has_markdown = True
+except ImportError:
+ has_markdown = False
from pygments import highlight
from pygments.lexers import get_all_lexers, get_lexer_by_name
from pygments.formatters import HtmlFormatter
@@ -38,6 +43,10 @@ class Paste(object):
del lexers[l]
except KeyError:
pass
+ rendered = []
+ if has_markdown:
+ rendered.append(('Rendered markdown', 'md-render'))
+ self.lexers.append(('Rendered', rendered))
self.lexers.append(('Others' if settings.categories else 'Syntax', sorted(lexers.items(), cmp = lambda a, b: cmp(a[0], b[0]))))
self.formatter = CustomHtmlFormatter(linenos = 'table', lineanchors = 'line', anchorlinenos = True)
@@ -72,12 +81,16 @@ class Paste(object):
}))]
def preview(self, mp):
- try:
- lex = get_lexer_by_name(mp['syntax'].value.decode('utf8'))
- lexername = lex.name
- text = highlight(mp['text'].value.decode('utf8'), lex, self.formatter)
- except:
- return self.message('Could not find the lexer "%s".' % mp['syntax'].value, 'Error')
+ if mp['syntax'].value == 'md-render' and has_markdown:
+ text = markdown.markdown(mp['text'].value)
+ lexername = 'Rendered markdown'
+ else:
+ try:
+ lex = get_lexer_by_name(mp['syntax'].value.decode('utf8'))
+ lexername = lex.name
+ text = highlight(mp['text'].value.decode('utf8'), lex, self.formatter)
+ except:
+ return self.message('Could not find the lexer "%s".' % mp['syntax'].value, 'Error')
self.start_response('200 OK', [('Content-Type', 'text/html; charset=utf-8')])
return [str(templates.view(searchList = {
@@ -89,6 +102,7 @@ class Paste(object):
'syntax': lexername,
'pastetitle': mp['title'].value.decode('utf8') or 'Untitled',
'text': text,
+ 'rendered': (lexername or '').startswith('Rendered '),
}))]
def add_paste(self, mp):
@@ -118,9 +132,13 @@ class Paste(object):
def view(self):
def get_formatted(syntax, text):
- lex = get_lexer_by_name(syntax or 'text')
- lexername = lex.name
- text = highlight(text, lex, self.formatter)
+ if syntax == 'md-render' and has_markdown:
+ text = markdown.markdown(text)
+ lexername = 'Rendered markdown'
+ else:
+ lex = get_lexer_by_name(syntax or 'text')
+ lexername = lex.name
+ text = highlight(text, lex, self.formatter)
return (lexername, text)
hash = self.path[1]
@@ -158,6 +176,7 @@ class Paste(object):
'syntax': cache.syntax_name,
'pastetitle': paste.title or 'Untitled',
'text': cache.text,
+ 'rendered': (cache.syntax_name or '').startswith('Rendered '),
}))]
def raw(self):