Welcome, guest | Sign In | My Account | Store | Cart
'''
Generates HTML highlighted code listings for source code files in any language known to
pygments. For a list of supported formats see http://pygments.org/languages/
by xhuman

'''

import os
import sys
from pygments import highlight
from pygments.lexers import get_lexer_by_name
from pygments.lexers import get_lexer_for_filename
from pygments.formatters import HtmlFormatter

header
= '''<html><head><style>'''
css_close
='''</style><body>'''
footer
= '''</body></html>'''

def usage():
   
print "\nUsage:", os.path.basename(sys.argv[0]), \
         
"[inputFile]", "[outputFile]", "[lexer]"

def getHtml(fileName=None, lexer_name='python', user_css_class="code"):

   
if not lexerName:
        lexer
= get_lexer_for_filename(os.path.basename(fileName))
   
else:

       
try:
            lexer
= get_lexer_by_name(lexer_name)
       
except IndexError:
           
print 'Error: no such lexer:',lexer_name
            usage
()
            sys
.exit(-2)

    formatter
= HtmlFormatter(linenos=True, cssclass=user_css_class)
    code
= open(fileName).read()
   
return highlight(code, lexer, formatter)

if __name__ == '__main__':
    in_file
= None
    out_file
= None
    css_class_name
= 'code'
    css
= HtmlFormatter().get_style_defs('.' + css_class_name)

   
if len(sys.argv) >1:
        in_file
= sys.argv[1]
   
else:
        usage
()
        sys
.exit(-1)

   
if len(sys.argv) >2:
        out_file
= sys.argv[2]
   
else:
        out_file
= os.sys.stdout

   
if len(sys.argv) > 3:
        lexerName
= sys.argv[3]
   
else:
        lexerName
= None
   
    result
= getHtml(in_file,lexerName,css_class_name)

    output
="\n".join([header,css,css_close, result,footer])

   
if out_file != os.sys.stdout:
        open
(out_file,"w").write(output)
   
else:
       
print output

Diff to Previous Revision

--- revision 5 2011-02-01 14:19:11
+++ revision 6 2011-02-01 14:21:59
@@ -11,18 +11,13 @@
 
from pygments.lexers import get_lexer_for_filename
 
from pygments.formatters import HtmlFormatter
 
-
-
 header
= '''<html><head><style>'''
 css_close
='''</style><body>'''
 footer
= '''</body></html>'''
 
-
-
 
def usage():
     
print "\nUsage:", os.path.basename(sys.argv[0]), \
           
"[inputFile]", "[outputFile]", "[lexer]"
-
 
 
def getHtml(fileName=None, lexer_name='python', user_css_class="code"):
 
@@ -40,7 +35,6 @@
     formatter
= HtmlFormatter(linenos=True, cssclass=user_css_class)
     code
= open(fileName).read()
     
return highlight(code, lexer, formatter)
-
 
 
if __name__ == '__main__':
     in_file
= None

History