'
107 | ' ' +
108 | ls + ' | ')
109 | else:
110 | yield 0, ('' % self.cssclass +
111 | '' +
112 | ls + ' | ')
113 | yield 0, dummyoutfile.getvalue()
114 | yield 0, ' | '
115 |
--------------------------------------------------------------------------------
/vinergy/util/util.py:
--------------------------------------------------------------------------------
1 | # vim: set fileencoding=utf-8:
2 |
3 | '''
4 | vinergy.util.util
5 | ~~~~~~~~~~~~~~~~~
6 |
7 | Handy tools for Vinergy.
8 | '''
9 |
10 | import mimetypes
11 |
12 | import pygments.lexers
13 | from pygments import formatters
14 | from pygments import highlight
15 | from pygments.lexers import guess_lexer
16 |
17 | from .formatter import MyHTMLFormatter
18 | from .filter import TabFilter
19 |
20 | term_ua = ('wget', 'curl')
21 |
22 | def guess_ext(code):
23 | '''Guess file ext with code'''
24 | lexer = guess_lexer(code)
25 | mime = lexer.mimetypes[0]
26 | ext = mimetypes.guess_extension(mime)[1:]
27 | return ext
28 |
29 |
30 | def is_terminal(ua):
31 | '''Determine the given UA is of terminal or not'''
32 | ua = ua.lower()
33 | for tua in term_ua:
34 | if ua.find(tua) != -1:
35 | return True
36 | return False
37 |
38 | def norm_filetype(syntax):
39 | """Normalize filetype"""
40 | try:
41 | lexer = pygments.lexers.get_lexer_by_name(syntax)
42 | return lexer.name.lower()
43 | except:
44 | return 'text only'
45 |
46 | def render(code, formatter, syntax):
47 | '''Render code with pygments'''
48 | if not syntax:
49 | lexer = guess_lexer(code)
50 | else:
51 | syntax = syntax.lower()
52 | try:
53 | lexer = pygments.lexers.get_lexer_by_name(syntax)
54 | except:
55 | lexer = pygments.lexers.TextLexer()
56 | lexer.add_filter(TabFilter(tabsize=8))
57 | f = getattr(formatters, formatter)
58 | if f.__name__ == 'HtmlFormatter':
59 | f = MyHTMLFormatter
60 | newcode = highlight(code, lexer, f(style='manni', lineanchors='n',
61 | anchorlinenos=True,
62 | linenos='table', encoding='utf-8'))
63 | else:
64 | newcode = highlight(code, lexer, f()).encode('utf-8')
65 | return newcode
66 |
--------------------------------------------------------------------------------
|