Changeset - 01d0f363f36d
[Not reviewed]
default
0 2 4
Marcin Kuzminski - 16 years ago 2010-04-25 01:18:38
marcin@python-works.com
added pygments webhelper
6 files changed with 597 insertions and 3 deletions:
0 comments (0 inline, 0 general)
pylons_app/lib/helpers.py
Show inline comments
 
@@ -6,6 +6,7 @@ available to Controllers. This module is
 
from pylons import url
 
from pylons.i18n.translation import _, ungettext
 
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,
 
@@ -22,6 +23,11 @@ from webhelpers.text import (chop_at, co
 
from webhelpers.pylonslib import Flash as _Flash
 
from webhelpers.pylonslib.secure_form import secure_form
 

	
 
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):
 
    '''
 
@@ -44,7 +50,7 @@ class _GetError(object):
 
        if form_errors and form_errors.has_key(field_name):
 
            return literal(tmpl % form_errors.get(field_name))
 

	
 
class _FileSizeFormat():
 
class _FileSizeFormat(object):
 
    """
 
    Formats the value like a 'human-readable' file size (i.e. 13 KB, 4.1 MB,
 
    102 bytes, etc).
 
@@ -64,6 +70,15 @@ class _FileSizeFormat():
 
        return _("%.1f GB") % (bytes / (1024 * 1024 * 1024))
 

	
 

	
 

	
 
def pygmentize(code, **kwargs):
 
    '''
 
    Filter for chunks of html to replace code tags with pygmented code
 
    '''
 
    return literal(highlight(code, guess_lexer(code), HtmlFormatter(**kwargs)))
 

	
 

	
 

	
 
filesizeformat = _FileSizeFormat()
 
link = _Link()
 
flash = _Flash()
pylons_app/public/css/pygments.css
Show inline comments
 
new file 100644
 
div.codeblock {
 
    overflow: auto;
 
    padding: 0px;
 
    border: 1px solid #ccc;
 
    background: #f8f8f8;
 
    font-size: 100%;
 
    line-height: 100%;
 
    /* new */
 
    line-height: 125%;
 
}
 

	
 
.code-highlight {
 
    padding: 0px;
 
    margin-top: 5px;
 
    margin-bottom: 5px;
 
    border-left: 2px solid #ccc;
 
}
 
.code-highlight pre, .linenodiv pre { 
 
	padding: 5px;
 
    margin: 0;
 
}
 
.linenos a { text-decoration: none; }
 

	
 

	
 
.code { display: block; }
 
.code-highlight .hll { background-color: #ffffcc }
 
.code-highlight .c { color: #408080; font-style: italic } /* Comment */
 
.code-highlight .err { border: 1px solid #FF0000 } /* Error */
 
.code-highlight .k { color: #008000; font-weight: bold } /* Keyword */
 
.code-highlight .o { color: #666666 } /* Operator */
 
.code-highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
 
.code-highlight .cp { color: #BC7A00 } /* Comment.Preproc */
 
.code-highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
 
.code-highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
 
.code-highlight .gd { color: #A00000 } /* Generic.Deleted */
 
.code-highlight .ge { font-style: italic } /* Generic.Emph */
 
.code-highlight .gr { color: #FF0000 } /* Generic.Error */
 
.code-highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
 
.code-highlight .gi { color: #00A000 } /* Generic.Inserted */
 
.code-highlight .go { color: #808080 } /* Generic.Output */
 
.code-highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
 
.code-highlight .gs { font-weight: bold } /* Generic.Strong */
 
.code-highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
 
.code-highlight .gt { color: #0040D0 } /* Generic.Traceback */
 
.code-highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
 
.code-highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
 
.code-highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
 
.code-highlight .kp { color: #008000 } /* Keyword.Pseudo */
 
.code-highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
 
.code-highlight .kt { color: #B00040 } /* Keyword.Type */
 
.code-highlight .m { color: #666666 } /* Literal.Number */
 
.code-highlight .s { color: #BA2121 } /* Literal.String */
 
.code-highlight .na { color: #7D9029 } /* Name.Attribute */
 
.code-highlight .nb { color: #008000 } /* Name.Builtin */
 
.code-highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
 
.code-highlight .no { color: #880000 } /* Name.Constant */
 
.code-highlight .nd { color: #AA22FF } /* Name.Decorator */
 
.code-highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
 
.code-highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
 
.code-highlight .nf { color: #0000FF } /* Name.Function */
 
.code-highlight .nl { color: #A0A000 } /* Name.Label */
 
.code-highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
 
.code-highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
 
.code-highlight .nv { color: #19177C } /* Name.Variable */
 
.code-highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
 
.code-highlight .w { color: #bbbbbb } /* Text.Whitespace */
 
.code-highlight .mf { color: #666666 } /* Literal.Number.Float */
 
.code-highlight .mh { color: #666666 } /* Literal.Number.Hex */
 
.code-highlight .mi { color: #666666 } /* Literal.Number.Integer */
 
.code-highlight .mo { color: #666666 } /* Literal.Number.Oct */
 
.code-highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
 
.code-highlight .sc { color: #BA2121 } /* Literal.String.Char */
 
.code-highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
 
.code-highlight .s2 { color: #BA2121 } /* Literal.String.Double */
 
.code-highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
 
.code-highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
 
.code-highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
 
.code-highlight .sx { color: #008000 } /* Literal.String.Other */
 
.code-highlight .sr { color: #BB6688 } /* Literal.String.Regex */
 
.code-highlight .s1 { color: #BA2121 } /* Literal.String.Single */
 
.code-highlight .ss { color: #19177C } /* Literal.String.Symbol */
 
.code-highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
 
.code-highlight .vc { color: #19177C } /* Name.Variable.Class */
 
.code-highlight .vg { color: #19177C } /* Name.Variable.Global */
 
.code-highlight .vi { color: #19177C } /* Name.Variable.Instance */
 
.code-highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
pylons_app/public/css/style-monoblue_custom.css
Show inline comments
 
new file 100644
 
/*** Initial Settings ***/
 
* {
 
  margin: 0;
 
  padding: 0;
 
  font-weight: normal;
 
  font-style: normal;
 
}
 

	
 
html {
 
  font-size: 100%;
 
  font-family: sans-serif;
 
}
 

	
 
body {
 
  font-size: 77%;
 
  margin: 15px 50px;
 
  background: #4B4B4C;
 
}
 

	
 
a {
 
  color:#0000cc;
 
  text-decoration: none;
 
}
 
/*** end of Initial Settings ***/
 

	
 

	
 
/** common settings **/
 
div#container {
 
  background: #FFFFFF;
 
  position: relative;
 
  color: #666;
 
}
 

	
 
div.page-header {
 
  padding: 50px 20px 0;
 
  background: #006699 top left repeat-x;
 
  position: relative;
 
}
 
  div.page-header h1 {
 
    margin: 10px 0 30px;
 
    font-size: 1.8em;
 
    font-weight: bold;
 
    font-family: osaka,'MS P Gothic', Georgia, serif;
 
    letter-spacing: 1px;
 
    color: #DDD;
 
  }
 
  div.page-header h1 a {
 
    font-weight: bold;
 
    color: #FFF;
 
  }
 
  div.page-header a {
 
    text-decoration: none;
 
  }
 

	
 
  div.page-header form {
 
    position: absolute;
 
    margin-bottom: 2px;
 
    bottom: 0;
 
    right: 20px;
 
  }
 
  div.page-header form label {
 
    color: #DDD;
 
  }
 
  div.page-header form input {
 
    padding: 2px;
 
    border: solid 1px #DDD;
 
  }
 
  div.page-header form dl {
 
    overflow: hidden;
 
  }
 
  div.page-header form dl dt {
 
    font-size: 1.2em;
 
  }
 
  div.page-header form dl dt,
 
  div.page-header form dl dd {
 
    margin: 0 0 0 5px;
 
    float: left;
 
    height: 24px;
 
    line-height: 20px;
 
  }
 

	
 
  ul.page-nav {
 
    margin: 10px 0 0 0;
 
    list-style-type: none;
 
    overflow: hidden;
 
    width: 800px;
 
  }
 
    ul.page-nav li {
 
      margin: 0 2px 0 0;
 
      float: left;
 
      width: 80px;
 
      height: 24px;
 
      font-size: 1.1em;
 
      line-height: 24px;
 
      text-align: center;
 
    }
 
    ul.page-nav li.current {
 
      background: #FFF;
 
    }
 
    ul.page-nav li a {
 
      height: 24px;
 
      color: #666;
 
      background: #DDD;
 
      display: block;
 
      text-decoration: none;
 
    }
 
    ul.page-nav li a:hover {
 
      color:#333;
 
      background: #FFF;
 
    }
 

	
 
ul.submenu {
 
  margin: 10px 0 -10px 20px;
 
  list-style-type: none;
 
}
 
ul.submenu li {
 
  margin: 0 10px 0 0;
 
  font-size: 1.2em;
 
  display: inline;
 
}
 

	
 
h2 {
 
  margin: 20px 0 10px;
 
  height: 30px;
 
  line-height: 30px;
 
  text-indent: 20px;
 
  background: #FFF;
 
  font-size: 1.2em;
 
  border-top: dotted 1px #D5E1E6;
 
  font-weight: bold;
 
}
 
h2.no-link {
 
  color:#006699;
 
}
 
h2.no-border {
 
  color: #FFF;
 
  background: #006699;
 
  border: 0;
 
}
 
h2 a {
 
  font-weight:bold;
 
  color:#006699;
 
}
 

	
 
div.page-path {
 
  text-align: right;
 
  padding: 20px 30px 10px 0;
 
  border:solid #d9d8d1;
 
  border-width:0px 0px 1px;
 
  font-size: 1.2em;
 
}
 

	
 
div.page-footer {
 
  margin: 50px 0 0;
 
  position: relative;
 
}
 
  div.page-footer p {
 
    position: relative;
 
    left: 20px;
 
    bottom: 5px;
 
    font-size: 1.2em;
 
  }
 

	
 
  ul.rss-logo {
 
    position: absolute;
 
    top: -10px;
 
    right: 20px;
 
    height: 20px;
 
    list-style-type: none;
 
  }
 
  ul.rss-logo li {
 
    display: inline;
 
  }
 
  ul.rss-logo li a {
 
    padding: 3px 6px;
 
    line-height: 10px;
 
    border:1px solid;
 
    border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
 
    color:#ffffff;
 
    background-color:#ff6600;
 
    font-weight:bold;
 
    font-family:sans-serif;
 
    font-size:10px;
 
    text-align:center;
 
    text-decoration:none;
 
  }
 
  div.rss-logo li a:hover {
 
    background-color:#ee5500;
 
  }
 

	
 
p.normal {
 
  margin: 20px 0 20px 30px;
 
  font-size: 1.2em;
 
}
 

	
 
table {
 
  margin: 10px 0 0 20px;
 
  width: 95%;
 
  border-collapse: collapse;
 
}
 
table tr td {
 
  font-size: 1.1em;
 
}
 
table tr td.nowrap {
 
  white-space: nowrap;
 
}
 
/*
 
table tr.parity0:hover,
 
table tr.parity1:hover {
 
  background: #D5E1E6;
 
}
 
*/
 
table tr.parity0 {
 
  background: #F1F6F7;
 
}
 
table tr.parity1 {
 
  background: #FFFFFF;
 
}
 
table tr td {
 
  padding: 5px 5px;
 
}
 
table.annotated tr td {
 
  padding: 0px 5px;
 
}
 

	
 
span.logtags span {
 
  padding: 2px 6px;
 
  font-weight: normal;
 
  font-size: 11px;
 
  border: 1px solid;
 
  background-color: #ffaaff;
 
  border-color: #ffccff #ff00ee #ff00ee #ffccff;
 
}
 
span.logtags span.tagtag {
 
  background-color: #ffffaa;
 
  border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
 
}
 
span.logtags span.branchtag {
 
  background-color: #aaffaa;
 
  border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
 
}
 
span.logtags span.inbranchtag {
 
  background-color: #d5dde6;
 
  border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4;
 
}
 

	
 
div.diff pre {
 
  margin: 10px 0 0 0;
 
}
 
div.diff pre span {
 
  font-family: monospace;
 
  white-space: pre;
 
  font-size: 1.2em;
 
  padding: 3px 0;
 
}
 
td.source {
 
  white-space: pre;
 
  font-family: monospace;
 
  margin: 10px 30px 0;
 
  font-size: 1.2em;
 
  font-family: monospace;
 
}
 
  div.source div.parity0,
 
  div.source div.parity1 {
 
    padding: 1px;
 
    font-size: 1.2em;
 
  }
 
  div.source div.parity0 {
 
    background: #F1F6F7;
 
  }
 
  div.source div.parity1 {
 
    background: #FFFFFF;
 
  }
 
div.parity0:hover,
 
div.parity1:hover {
 
  background: #D5E1E6;
 
}
 
.linenr {
 
  color: #999;
 
  text-align: right;
 
}
 
.lineno {
 
  text-align: right;
 
}
 
.lineno a {
 
  color: #999;
 
}
 
td.linenr {
 
  width: 60px;
 
}
 

	
 
div#powered-by {
 
  position: absolute;
 
  width: 75px;
 
  top: 15px;
 
  right: 20px;
 
  font-size: 1.2em;
 
}
 
div#powered-by a {
 
  color: #EEE;
 
  text-decoration: none;
 
}
 
div#powered-by a:hover {
 
  text-decoration: underline;
 
}
 
/*
 
div#monoblue-corner-top-left {
 
  position: absolute;
 
  top: 0;
 
  left: 0;
 
  width: 10px;
 
  height: 10px;
 
  background: url(./monoblue-corner.png) top left no-repeat !important;
 
  background: none;
 
}
 
div#monoblue-corner-top-right {
 
  position: absolute;
 
  top: 0;
 
  right: 0;
 
  width: 10px;
 
  height: 10px;
 
  background: url(./monoblue-corner.png) top right no-repeat !important;
 
  background: none;
 
}
 
div#monoblue-corner-bottom-left {
 
  position: absolute;
 
  bottom: 0;
 
  left: 0;
 
  width: 10px;
 
  height: 10px;
 
  background: url(./monoblue-corner.png) bottom left no-repeat !important;
 
  background: none;
 
}
 
div#monoblue-corner-bottom-right {
 
  position: absolute;
 
  bottom: 0;
 
  right: 0;
 
  width: 10px;
 
  height: 10px;
 
  background: url(./monoblue-corner.png) bottom right no-repeat !important;
 
  background: none;
 
}
 
*/
 
/** end of common settings **/
 

	
 
/** summary **/
 
dl.overview {
 
  margin: 0 0 0 30px;
 
  font-size: 1.1em;
 
  overflow: hidden;
 
}
 
  dl.overview dt,
 
  dl.overview dd {
 
    margin: 5px 0;
 
    float: left;
 
  }
 
  dl.overview dt {
 
    clear: left;
 
    font-weight: bold;
 
    width: 150px;
 
  }
 
/** end of summary **/
 

	
 
/** chagelog **/
 
h3.changelog {
 
  margin: 20px 0 5px 30px;
 
  padding: 0 0 2px;
 
  font-size: 1.4em;
 
  border-bottom: dotted 1px #D5E1E6;
 
}
 
ul.changelog-entry {
 
  margin: 0 0 10px 30px;
 
  list-style-type: none;
 
  position: relative;
 
}
 
ul.changelog-entry li span.revdate {
 
  font-size: 1.1em;
 
}
 
ul.changelog-entry li.age {
 
  position: absolute;
 
  top: -25px;
 
  right: 10px;
 
  font-size: 1.4em;
 
  color: #CCC;
 
  font-weight: bold;
 
  font-style: italic;
 
}
 
ul.changelog-entry li span.name {
 
  font-size: 1.2em;
 
  font-weight: bold;
 
}
 
ul.changelog-entry li.description {
 
  margin: 10px 0 0;
 
  font-size: 1.1em;
 
}
 
/** end of changelog **/
 

	
 
/** file **/
 
p.files {
 
  margin: 0 0 0 20px;
 
  font-size: 2.0em;
 
  font-weight: bold;
 
}
 
/** end of file **/
 

	
 
/** changeset **/
 
h3.changeset {
 
  margin: 20px 0 5px 20px;
 
  padding: 0 0 2px;
 
  font-size: 1.6em;
 
  border-bottom: dotted 1px #D5E1E6;
 
}
 
p.changeset-age {
 
  position: relative;
 
}
 
p.changeset-age span {
 
  position: absolute;
 
  top: -25px;
 
  right: 10px;
 
  font-size: 1.4em;
 
  color: #CCC;
 
  font-weight: bold;
 
  font-style: italic;
 
}
 
p.description {
 
  margin: 10px 30px 0 30px;
 
  padding: 10px;
 
  border: solid 1px #CCC;
 
  font-size: 1.2em;
 
}
 
/** end of changeset **/
 

	
 
/** canvas **/
 
div#wrapper {
 
	position: relative;
 
    font-size: 1.2em;
 
}
 

	
 
canvas {
 
	position: absolute;
 
	z-index: 5;
 
	top: -0.7em;
 
}
 

	
 
ul#nodebgs li.parity0 {
 
    background: #F1F6F7;
 
}
 

	
 
ul#nodebgs li.parity1 {
 
    background: #FFFFFF;
 
}
 

	
 
ul#graphnodes {
 
	position: absolute;
 
	z-index: 10;
 
	top: 7px;
 
	list-style: none inside none;
 
}
 

	
 
ul#nodebgs {
 
	list-style: none inside none;
 
}
 

	
 
ul#graphnodes li, ul#nodebgs li {
 
	height: 39px;
 
}
 

	
 
ul#graphnodes li .info {
 
	display: block;
 
	position: relative;
 
}
 
/** end of canvas **/
 

	
 
.browser-file {
 
	background-image:url("/images/file.png");
 
	background-repeat:no-repeat;
 
	display:block;
 
	height:16px;
 
	padding-left:20px;
 
	padding-top:5px;
 
	text-align:left;
 
}
 
.browser-dir {
 
	background-image:url("/images/folder.png");
 
	background-repeat:no-repeat;
 
	display:block;
 
	height:16px;
 
	padding-left:20px;
 
	padding-top:5px;
 
	text-align:left;
 
}
 
\ No newline at end of file
pylons_app/public/images/file.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
pylons_app/public/images/folder.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
pylons_app/templates/base/base.html
Show inline comments
 
@@ -4,8 +4,8 @@
 
<head>
 
    <link rel="icon" href="${c.staticurl}hgicon.png" type="image/png" />
 
    <meta name="robots" content="index, nofollow"/>
 
    <link rel="stylesheet" href="${c.staticurl}style-monoblue.css" type="text/css" />
 
       <title>${next.title()}</title>
 
    ${self.css()}
 
    ${self.js()}
 
</head>
 

	
 
@@ -83,7 +83,9 @@
 
        </ul>
 
</%def>
 

	
 

	
 
<%def name="css()">
 
<link rel="stylesheet" href="/css/style-monoblue_custom.css" type="text/css" />
 
</%def>
 

	
 
<%def name="js()">
 
<script type="text/javascript" src="/js/yui/utilities/utilities.js"></script>
0 comments (0 inline, 0 general)