Show More
@@ -3,30 +3,26 b'' | |||||
3 | Consists of functions to typically be used within templates, but also |
|
3 | Consists of functions to typically be used within templates, but also | |
4 | available to Controllers. This module is available to both as 'h'. |
|
4 | available to Controllers. This module is available to both as 'h'. | |
5 | """ |
|
5 | """ | |
|
6 | from pygments.formatters import HtmlFormatter | |||
|
7 | from pygments import highlight as code_highlight | |||
6 | from pylons import url, app_globals as g |
|
8 | from pylons import url, app_globals as g | |
7 | from pylons.i18n.translation import _, ungettext |
|
9 | from pylons.i18n.translation import _, ungettext | |
8 | from webhelpers.html import (literal, HTML, escape) |
|
10 | from vcs.utils.annotate import annotate_highlight | |
|
11 | from webhelpers.html import literal, HTML, escape | |||
9 | from webhelpers.html.builder import make_tag |
|
12 | from webhelpers.html.builder import make_tag | |
10 |
from webhelpers.html.t |
|
13 | from webhelpers.html.tags import auto_discovery_link, checkbox, css_classes, \ | |
11 | , mail_to, strip_links, strip_tags, tag_re) |
|
14 | end_form, file, form, hidden, image, javascript_link, link_to, link_to_if, \ | |
12 | from webhelpers.html.tags import (auto_discovery_link, checkbox, css_classes, |
|
15 | link_to_unless, ol, required_legend, select, stylesheet_link, submit, text, \ | |
13 | end_form, file, form, hidden, image, |
|
16 | password, textarea, title, ul, xml_declaration | |
14 | javascript_link, link_to, link_to_if, |
|
17 | from webhelpers.html.tools import auto_link, button_to, highlight, js_obfuscate, \ | |
15 | link_to_unless, ol, required_legend, |
|
18 | mail_to, strip_links, strip_tags, tag_re | |
16 | select, stylesheet_link, |
|
19 | from webhelpers.number import format_byte_size, format_bit_size | |
17 | submit, text, password, textarea, title, |
|
|||
18 | ul, xml_declaration) |
|
|||
19 | from webhelpers.text import (chop_at, collapse, convert_accented_entities, |
|
|||
20 | convert_misc_entities, lchop, plural, rchop, |
|
|||
21 | remove_formatting, replace_whitespace, urlify) |
|
|||
22 | from webhelpers.number import (format_byte_size, format_bit_size) |
|
|||
23 | from webhelpers.pylonslib import Flash as _Flash |
|
20 | from webhelpers.pylonslib import Flash as _Flash | |
24 | from webhelpers.pylonslib.secure_form import secure_form |
|
21 | from webhelpers.pylonslib.secure_form import secure_form | |
|
22 | from webhelpers.text import chop_at, collapse, convert_accented_entities, \ | |||
|
23 | convert_misc_entities, lchop, plural, rchop, remove_formatting, \ | |||
|
24 | replace_whitespace, urlify | |||
25 |
|
25 | |||
26 | from pygments import highlight |
|
|||
27 | from pygments.formatters import HtmlFormatter |
|
|||
28 | from pygments.lexers import guess_lexer |
|
|||
29 | from pygments.lexers import get_lexer_by_name |
|
|||
30 |
|
26 | |||
31 | #Custom helper here :) |
|
27 | #Custom helper here :) | |
32 | class _Link(object): |
|
28 | class _Link(object): | |
@@ -62,48 +58,23 b' class _FilesBreadCrumbs(object):' | |||||
62 |
|
58 | |||
63 | return literal(' / '.join(url_l)) |
|
59 | return literal(' / '.join(url_l)) | |
64 |
|
60 | |||
65 |
def pygmentize( |
|
61 | def pygmentize(filenode, **kwargs): | |
66 | """ |
|
62 | """ | |
67 | Filter for chunks of html to replace code tags with pygmented code |
|
63 | pygmentize function using pygments | |
|
64 | @param filenode: | |||
68 | """ |
|
65 | """ | |
69 | code = code.splitlines() |
|
66 | return literal(code_highlight(filenode.content, filenode.lexer, HtmlFormatter(**kwargs))) | |
70 | _html, _html2 = [], [] |
|
|||
71 | _html.append("""<table class="code-highlighttable">""") |
|
|||
72 | _html.append("""<tr>""") |
|
|||
73 | _html.append("""<td class="linenos">""") |
|
|||
74 | _html.append("""<div class="linenodiv">""") |
|
|||
75 | _html.append("""<pre>""") |
|
|||
76 | for cnt, code in enumerate(code, 1): |
|
|||
77 | #generete lines nos |
|
|||
78 | _html.append("""<a id="A%s" href="#A%s">%s</a>\n""" \ |
|
|||
79 | % (cnt, cnt, cnt)) |
|
|||
80 | #propagate second list with code |
|
|||
81 | _html2.append("""%s""" % (highlight(code, get_lexer_by_name('python'), |
|
|||
82 | HtmlFormatter(nowrap=True)))) |
|
|||
83 | _html.append("""</pre>""") |
|
|||
84 | _html.append("""</div>""") |
|
|||
85 | _html.append("""</td>""") |
|
|||
86 | _html.append("""<td class="code">""") |
|
|||
87 | _html.append("""<div class="code-highlight">""") |
|
|||
88 | _html.append("""<pre>""") |
|
|||
89 | _html.extend(_html2) |
|
|||
90 | _html.append("""</pre>""") |
|
|||
91 | _html.append("""</div>""") |
|
|||
92 | _html.append("""</td>""") |
|
|||
93 | _html.append("""</tr>""") |
|
|||
94 | _html.append("""</table>""") |
|
|||
95 | return literal(''.join(_html)) |
|
|||
96 | #return literal(highlight(code, get_lexer_by_name('python'), HtmlFormatter(**kwargs))) |
|
|||
97 |
|
67 | |||
98 |
def pygmentize_annotation( |
|
68 | def pygmentize_annotation(filenode, **kwargs): | |
99 | """ |
|
69 | """ | |
100 | Generate a dict of |
|
70 | pygmentize function for annotation | |
101 |
@param |
|
71 | @param filenode: | |
102 | """ |
|
72 | """ | |
103 | import random |
|
73 | ||
104 | color_dict = g.changeset_annotation_colors |
|
74 | color_dict = g.changeset_annotation_colors | |
105 | def gen_color(): |
|
75 | def gen_color(): | |
106 | return [str(random.randrange(0, 255)) for _ in xrange(3)] |
|
76 | import random | |
|
77 | return [str(random.randrange(10, 235)) for _ in xrange(3)] | |||
107 | def get_color_string(cs): |
|
78 | def get_color_string(cs): | |
108 | if color_dict.has_key(cs): |
|
79 | if color_dict.has_key(cs): | |
109 | col = color_dict[cs] |
|
80 | col = color_dict[cs] | |
@@ -111,46 +82,15 b' def pygmentize_annotation(annotate_list,' | |||||
111 | color_dict[cs] = gen_color() |
|
82 | color_dict[cs] = gen_color() | |
112 | col = color_dict[cs] |
|
83 | col = color_dict[cs] | |
113 | return "color: rgb(%s) ! important;" % (','.join(col)) |
|
84 | return "color: rgb(%s) ! important;" % (','.join(col)) | |
114 | _html, _html2, _html3 = [], [], [] |
|
85 | ||
115 | _html.append("""<table class="code-highlighttable">""") |
|
86 | def url_func(changeset): | |
116 | _html.append("""<tr>""") |
|
87 | return '%s\n' % (link_to(changeset.raw_id, | |
117 | _html.append("""<td class="linenos">""") |
|
88 | url('changeset_home', repo_name='test', revision=changeset.raw_id), | |
118 | _html.append("""<div class="linenodiv">""") |
|
89 | title=_('author') + ':%s rev:%s %s' % (changeset.author, changeset.revision, | |
119 | _html.append("""<pre>""") |
|
90 | changeset.message,), | |
120 | for line in annotate_list: |
|
91 | style=get_color_string(changeset.raw_id))) | |
121 |
|
|
92 | ||
122 | _html.append("""<a id="A%s" href="#S%s">%s</a>\n""" \ |
|
93 | return literal(annotate_highlight(filenode, url_func, **kwargs)) | |
123 | % (line[0], line[0], line[0])) |
|
|||
124 | #annotation tags |
|
|||
125 | _html2.append("""%s\n""" % link_to(line[1].raw_id, |
|
|||
126 | url('changeset_home', repo_name=repo_name, revision=line[1].raw_id), |
|
|||
127 | title=_('author') + ':%s rev:%s %s' % (line[1].author, line[1].revision, |
|
|||
128 | line[1].message,), |
|
|||
129 | style=get_color_string(line[1].raw_id))) |
|
|||
130 | #code formated with pygments |
|
|||
131 | _html3.append("""%s""" % (highlight(line[2], get_lexer_by_name('python') |
|
|||
132 | , HtmlFormatter(nowrap=True)))) |
|
|||
133 | _html.append("""</pre>""") |
|
|||
134 | _html.append("""</div>""") |
|
|||
135 | _html.append("""</td>""") |
|
|||
136 | _html.append("""<td class="linenos">""") |
|
|||
137 | _html.append("""<div class="linenodiv">""") |
|
|||
138 | _html.append("""<pre>""") |
|
|||
139 | _html.extend(_html2) |
|
|||
140 | _html.append("""</pre>""") |
|
|||
141 | _html.append("""</div>""") |
|
|||
142 | _html.append("""</td>""") |
|
|||
143 | _html.append("""<td class="code">""") |
|
|||
144 | _html.append("""<div class="code-highlight">""") |
|
|||
145 | _html.append("""<pre>""") |
|
|||
146 | _html.extend(_html3) |
|
|||
147 | _html.append("""</pre>""") |
|
|||
148 | _html.append("""</div>""") |
|
|||
149 | _html.append("""</td>""") |
|
|||
150 | _html.append("""</tr>""") |
|
|||
151 | _html.append("""</table>""") |
|
|||
152 | return literal(''.join(_html)) |
|
|||
153 |
|
||||
154 |
|
94 | |||
155 | files_breadcrumbs = _FilesBreadCrumbs() |
|
95 | files_breadcrumbs = _FilesBreadCrumbs() | |
156 | link = _Link() |
|
96 | link = _Link() |
@@ -37,7 +37,7 b'' | |||||
37 | <div class="commit" style="font-size:70%">"${c.file_msg}"</div> |
|
37 | <div class="commit" style="font-size:70%">"${c.file_msg}"</div> | |
38 | </div> |
|
38 | </div> | |
39 | <div class="code-body"> |
|
39 | <div class="code-body"> | |
40 | ${h.pygmentize_annotation(c.annotate,c.repo_name)} |
|
40 | ${h.pygmentize_annotation(c.file,linenos=True,anchorlinenos=True,lineanchors='S',cssclass="code-highlight")} | |
41 | </div> |
|
41 | </div> | |
42 | </div> |
|
42 | </div> | |
43 | </div> |
|
43 | </div> |
@@ -23,6 +23,6 b'' | |||||
23 | <div class="commit" style="font-size:70%">"${c.file_msg}"</div> |
|
23 | <div class="commit" style="font-size:70%">"${c.file_msg}"</div> | |
24 | </div> |
|
24 | </div> | |
25 | <div class="code-body"> |
|
25 | <div class="code-body"> | |
26 |
${h.pygmentize(c.files_list |
|
26 | ${h.pygmentize(c.files_list,linenos=True,anchorlinenos=True,lineanchors='S',cssclass="code-highlight")} | |
27 | </div> |
|
27 | </div> | |
28 | </div> No newline at end of file |
|
28 | </div> |
General Comments 0
You need to be logged in to leave comments.
Login now