diff --git a/pylons_app/lib/helpers.py b/pylons_app/lib/helpers.py --- a/pylons_app/lib/helpers.py +++ b/pylons_app/lib/helpers.py @@ -3,30 +3,26 @@ Consists of functions to typically be used within templates, but also available to Controllers. This module is available to both as 'h'. """ +from pygments.formatters import HtmlFormatter +from pygments import highlight as code_highlight from pylons import url, app_globals as g from pylons.i18n.translation import _, ungettext -from webhelpers.html import (literal, HTML, escape) +from vcs.utils.annotate import annotate_highlight +from webhelpers.html import literal, HTML, escape from webhelpers.html.builder import make_tag -from webhelpers.html.tools import (auto_link, button_to, highlight, js_obfuscate - , mail_to, strip_links, strip_tags, tag_re) -from webhelpers.html.tags import (auto_discovery_link, checkbox, css_classes, - end_form, file, form, hidden, image, - javascript_link, link_to, link_to_if, - link_to_unless, ol, required_legend, - select, stylesheet_link, - submit, text, password, textarea, title, - ul, xml_declaration) -from webhelpers.text import (chop_at, collapse, convert_accented_entities, - convert_misc_entities, lchop, plural, rchop, - remove_formatting, replace_whitespace, urlify) -from webhelpers.number import (format_byte_size, format_bit_size) +from webhelpers.html.tags import auto_discovery_link, checkbox, css_classes, \ + end_form, file, form, hidden, image, javascript_link, link_to, link_to_if, \ + link_to_unless, ol, required_legend, select, stylesheet_link, submit, text, \ + password, textarea, title, ul, xml_declaration +from webhelpers.html.tools import auto_link, button_to, highlight, js_obfuscate, \ + mail_to, strip_links, strip_tags, tag_re +from webhelpers.number import format_byte_size, format_bit_size from webhelpers.pylonslib import Flash as _Flash from webhelpers.pylonslib.secure_form import secure_form +from webhelpers.text import chop_at, collapse, convert_accented_entities, \ + convert_misc_entities, lchop, plural, rchop, remove_formatting, \ + replace_whitespace, urlify -from pygments import highlight -from pygments.formatters import HtmlFormatter -from pygments.lexers import guess_lexer -from pygments.lexers import get_lexer_by_name #Custom helper here :) class _Link(object): @@ -62,48 +58,23 @@ class _FilesBreadCrumbs(object): return literal(' / '.join(url_l)) -def pygmentize(code, **kwargs): +def pygmentize(filenode, **kwargs): """ - Filter for chunks of html to replace code tags with pygmented code + pygmentize function using pygments + @param filenode: """ - code = code.splitlines() - _html, _html2 = [], [] - _html.append("""""") - _html.append("""""") - _html.append("""""") - _html.append("""""") - _html.append("""""") - _html.append("""
""") - _html.append("""
""") - _html.append("""
""")
-    for cnt, code in enumerate(code, 1):
-        #generete lines nos
-        _html.append("""%s\n""" \
-                     % (cnt, cnt, cnt))
-        #propagate second list with code
-        _html2.append("""%s""" % (highlight(code, get_lexer_by_name('python'),
-                                       HtmlFormatter(nowrap=True))))        
-    _html.append("""
""") - _html.append("""
""") - _html.append("""
""") - _html.append("""
""") - _html.append("""
""")
-    _html.extend(_html2)
-    _html.append("""
""") - _html.append("""
""") - _html.append("""
""") - return literal(''.join(_html)) - #return literal(highlight(code, get_lexer_by_name('python'), HtmlFormatter(**kwargs))) + return literal(code_highlight(filenode.content, filenode.lexer, HtmlFormatter(**kwargs))) -def pygmentize_annotation(annotate_list, repo_name): +def pygmentize_annotation(filenode, **kwargs): """ - Generate a dict of - @param annotate_lists: + pygmentize function for annotation + @param filenode: """ - import random + color_dict = g.changeset_annotation_colors def gen_color(): - return [str(random.randrange(0, 255)) for _ in xrange(3)] + import random + return [str(random.randrange(10, 235)) for _ in xrange(3)] def get_color_string(cs): if color_dict.has_key(cs): col = color_dict[cs] @@ -111,46 +82,15 @@ def pygmentize_annotation(annotate_list, color_dict[cs] = gen_color() col = color_dict[cs] return "color: rgb(%s) ! important;" % (','.join(col)) - _html, _html2, _html3 = [], [], [] - _html.append("""""") - _html.append("""""") - _html.append("""""") - _html.append("""""") - _html.append("""""") - _html.append("""""") - _html.append("""
""") - _html.append("""
""") - _html.append("""
""")
-    for line in annotate_list:
-        #lines
-        _html.append("""%s\n""" \
-                     % (line[0], line[0], line[0]))
-        #annotation tags
-        _html2.append("""%s\n""" % link_to(line[1].raw_id,
-        url('changeset_home', repo_name=repo_name, revision=line[1].raw_id),
-        title=_('author') + ':%s rev:%s %s' % (line[1].author, line[1].revision,
-                                                line[1].message,),
-        style=get_color_string(line[1].raw_id)))
-        #code formated with pygments
-        _html3.append("""%s""" % (highlight(line[2], get_lexer_by_name('python')
-                                            , HtmlFormatter(nowrap=True))))        
-    _html.append("""
""") - _html.append("""
""") - _html.append("""
""") - _html.append("""
""") - _html.append("""
""")
-    _html.extend(_html2)
-    _html.append("""
""") - _html.append("""
""") - _html.append("""
""") - _html.append("""
""") - _html.append("""
""")
-    _html.extend(_html3)
-    _html.append("""
""") - _html.append("""
""") - _html.append("""
""") - return literal(''.join(_html)) - + + def url_func(changeset): + return '%s\n' % (link_to(changeset.raw_id, + url('changeset_home', repo_name='test', revision=changeset.raw_id), + title=_('author') + ':%s rev:%s %s' % (changeset.author, changeset.revision, + changeset.message,), + style=get_color_string(changeset.raw_id))) + + return literal(annotate_highlight(filenode, url_func, **kwargs)) files_breadcrumbs = _FilesBreadCrumbs() link = _Link() diff --git a/pylons_app/templates/files/files_annotate.html b/pylons_app/templates/files/files_annotate.html --- a/pylons_app/templates/files/files_annotate.html +++ b/pylons_app/templates/files/files_annotate.html @@ -37,7 +37,7 @@
"${c.file_msg}"
- ${h.pygmentize_annotation(c.annotate,c.repo_name)} + ${h.pygmentize_annotation(c.file,linenos=True,anchorlinenos=True,lineanchors='S',cssclass="code-highlight")}
diff --git a/pylons_app/templates/files/files_source.html b/pylons_app/templates/files/files_source.html --- a/pylons_app/templates/files/files_source.html +++ b/pylons_app/templates/files/files_source.html @@ -23,6 +23,6 @@
"${c.file_msg}"
- ${h.pygmentize(c.files_list.content,linenos=True,anchorlinenos=True,cssclass="code-highlight")} + ${h.pygmentize(c.files_list,linenos=True,anchorlinenos=True,lineanchors='S',cssclass="code-highlight")}
\ No newline at end of file