I was using this web site to highlight and format my SQL code to HTML to insert into our wiki at work on Sharepoint, when all of a sudden the website stopped working. After some searching I discovered the site was using Pygments, a Syntax Highlighting Library for Python. So I decided to try and roll my own solution. This article will detail the steps I went through to make it happen.
Download
- Download Python 2.7, 3.3 did not work for Easy Setup which I used to install pygments. http://www.python.org/download/
- Download Easy Setup also called setuptools. https://pypi.python.org/pypi/setuptools
Install
- Installed Python 2.7 with the defaults which creates a folder called C:Python27
- Installed Easy Setup using the EXE taking the defaults
- Installed Pygments by hitting a console window and running this from the C:Python27Scripts folder. easy_install Pygments
Configure
- You have to configure IIS to work with Python.
- IIS 7: I used this article for IIS 7 config: http://forums.iis.net/t/1122937.aspx
- IIS 6: I used this article for IIS 6 Config: http://www.winservermart.com/HowTo/Install-Python-In-Windows-Server.aspx
- The IIS 6 and IIS 7 config is a little different specifically on the Executable parameters.
Code
- First I setup a basic HTML page with a simple form.The page had a single form with a TEXTAREA named code.
- Second I pieced a codedump.py Python file together using code snippets from the Pygments web site, StackOvervlow, and Python help files.
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import cgi
# enable debugging
import cgitb
cgitb.enable()
#print "Content-Type: text/plain;charset=utf-8"
from pygments import highlight
from pygments.lexers import SqlLexer
from pygments.formatters import HtmlFormatter
from pygments.styles import get_all_styles
form = cgi.FieldStorage()
code = form["code"].value
print ""
print ""
print ""
print highlight(code, SqlLexer(), HtmlFormatter(noclasses=True,style='default'))
print ""
print ""
print ""
#print HtmlFormatter().get_style_defs('.highlight')
print highlight(code,SqlLexer(),HtmlFormatter(noclasses=True,style='default'))
#print list(get_all_styles())
- SqlLexer is hardcoded here meaning that we can only convert SQL code with this page.
- Working on allowing for other languages
- Pygments Formatter has several options, this code is only using the noclasses and style options.
- There are several builtin Styles and you can create your own styles.
Here is the semi-finished product. http://www.thejoestory.com/codeschemer
Next Steps
- Allow for different types of code
- Create a custom style (don’t like the default background color)
0 comments:
Post a Comment