| PySourceColor (version 2.0, 15 February 2005) | index PySourceColor.py PySourceColor.py.html |
PySourceColor.py
----------------------------------------------------------------------------
A python source to colorized html/css/xhtml converter.
Hacked by M.E.Farmer Jr. 2004, 2005
Python license
----------------------------------------------------------------------------
- HTML markup does not create w3c valid html, but it works on every
browser i've tried so far.(I.E.,Mozilla/Firefox,Opera,Konqueror,wxHTML).
- CSS markup is w3c validated html 4.01 strict,
but will not render correctly on all browsers.
- XHTML markup is w3c validated xhtml 1.0 strict,
like html 4.01, will not render correctly on all browsers.
----------------------------------------------------------------------------
Features:
-Three types of markup:
html (default)
css/html 4.01 strict
xhtml 1.0 strict
-Can tokenize and colorize:
12 types of strings
2 comment types
numbers
operators
brackets
math operators
class / name
def / name
decorator / name
keywords
arguments class/def/decorator
linenumbers
names
text
-Eight colorschemes built-in:
null
mono
lite (default)
dark
dark2
idle
viewcvs
pythonwin
-Header and footer
set to '' for builtin header / footer.
give path to a file containing the html
you want added as header or footer.
-Arbitrary text and html
html markup converts all to raw (TEXT token)
#@# for raw -> send raw text.
#$# for span -> inline html and text.
#%# for div -> block level html and text.
-Linenumbers
Supports all styles. New token is called LINE.
Defaults to NAME if not defined.
Style options
-ALL markups support these text styles:
b = bold
i = italic
u = underline
-CSS and XHTML has limited support for borders:
HTML markup functions will ignore these.
Optional: Border color in RGB hex
Defaults to the text forecolor.
#rrggbb = border color
Border size:
l = thick
m = medium
t = thin
Border type:
- = dashed
. = dotted
s = solid
d = double
g = groove
r = ridge
n = inset
o = outset
You can specify multiple sides,
they will all use the same style.
Optional: Default is full border.
v = bottom
< = left
> = right
^ = top
NOTE: Specify the styles you want.
The markups will ignore unsupported styles
Also note not all browsers can show these options
-All tokens default to NAME if not defined
so the only absolutely critical ones to define are:
NAME, ERRORTOKEN, PAGEBACKGROUND
----------------------------------------------------------------------------
Example usage:
----------------------------------------------------------------------------
# import
import PySourceColor as psc
psc.convert('c:/Python22/PySourceColor.py', colors=psc.idle, show=1)
----------------------------------------------------------------------------
# from module import *
from PySourceColor import *
convert('c:/Python22/Lib', colors=lite, markup="css",
header='#$#<b>This is a simpe heading</b><hr/>')
----------------------------------------------------------------------------
# How to use a custom colorscheme, and most of the 'features'
from PySourceColor import *
new = {
ERRORTOKEN: ('bui','#FF8080',''),
DECORATOR_NAME: ('s','#AACBBC',''),
DECORATOR: ('n','#333333',''),
NAME: ('t.<v','#1133AA','#DDFF22'),
NUMBER: ('','#236676','#FF5555'),
OPERATOR: ('b','#454567','#BBBB11'),
MATH_OPERATOR: ('','#935623','#423afb'),
BRACKETS: ('b','#ac34bf','#6457a5'),
COMMENT: ('t-#0022FF','#545366','#AABBFF'),
DOUBLECOMMENT: ('<l#553455','#553455','#FF00FF'),
CLASS_NAME: ('m^v-','#000000','#FFFFFF'),
DEF_NAME: ('l=<v','#897845','#000022'),
KEYWORD: ('.b','#345345','#FFFF22'),
SINGLEQUOTE: ('mn','#223344','#AADDCC'),
SINGLEQUOTE_R: ('','#344522',''),
SINGLEQUOTE_U: ('','#234234',''),
DOUBLEQUOTE: ('m#0022FF','#334421',''),
DOUBLEQUOTE_R: ('','#345345',''),
DOUBLEQUOTE_U: ('','#678673',''),
TRIPLESINGLEQUOTE: ('tv','#FFFFFF','#000000'),
TRIPLESINGLEQUOTE_R: ('tbu','#443256','#DDFFDA'),
TRIPLESINGLEQUOTE_U: ('','#423454','#DDFFDA'),
TRIPLEDOUBLEQUOTE: ('li#236fd3b<>','#000000','#FFFFFF'),
TRIPLEDOUBLEQUOTE_R: ('tub','#000000','#FFFFFF'),
TRIPLEDOUBLEQUOTE_U: ('-', '#CCAABB','#FFFAFF'),
LINE: ('ib-','#ff66aa','#7733FF'),]
TEXT: ('','#546634',''),
PAGEBACKGROUND: '#FFFAAA',
}
if __name__ == '__main__':
import sys
convert(sys.argv[1], './xhtml.html', colors=new, markup='xhtml', show=1,
linenumbers=1)
convert(sys.argv[1], './html.html', colors=new, markup='html', show=1,
linenumbers=1)
----------------------------------------------------------------------------
| Modules | ||||||
| ||||||
| Classes | ||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||
| Functions | ||
| ||
| Data | ||
| ARGS = 257 BRACKETS = 277 CLASS_NAME = 259 COMMENT = 52 DECORATOR = 275 DECORATOR_NAME = 276 DEF_NAME = 260 DOUBLECOMMENT = 258 DOUBLEQUOTE = 265 DOUBLEQUOTE_R = 266 DOUBLEQUOTE_U = 267 ERRORTOKEN = 51 KEYWORD = 261 LINE = 279 MARKUPDICT = {1: 'py_name', 2: 'py_num', 50: 'py_op', 51: 'py_err', 52: 'py_com', 257: 'py_args', 258: 'py_dcom', 259: 'py_clsn', 260: 'py_defn', 261: 'py_key', ...} MATH_OPERATOR = 278 NAME = 1 NUMBER = 2 OPERATOR = 50 PAGEBACKGROUND = 274 SINGLEQUOTE = 262 SINGLEQUOTE_R = 263 SINGLEQUOTE_U = 264 TEXT = 280 TOKEN_NAMES = {'ARGS': 257, 'BRACKETS': 277, 'CLASS_NAME': 259, 'COMMENT': 52, 'DECORATOR': 275, 'DECORATOR_NAME': 276, 'DEF_NAME': 260, 'DOUBLECOMMENT': 258, 'DOUBLEQUOTE': 265, 'DOUBLEQUOTE_R': 266, ...} TRIPLEDOUBLEQUOTE = 271 TRIPLEDOUBLEQUOTE_R = 272 TRIPLEDOUBLEQUOTE_U = 273 TRIPLESINGLEQUOTE = 268 TRIPLESINGLEQUOTE_R = 269 TRIPLESINGLEQUOTE_U = 270 __all__ = ['ERRORTOKEN', 'DECORATOR_NAME', 'DECORATOR', 'ARGS', 'TOKEN_NAMES', 'NAME', 'NUMBER', 'OPERATOR', 'COMMENT', 'MATH_OPERATOR', 'DOUBLECOMMENT', 'CLASS_NAME', 'DEF_NAME', 'KEYWORD', 'BRACKETS', 'SINGLEQUOTE', 'SINGLEQUOTE_R', 'SINGLEQUOTE_U', 'DOUBLEQUOTE', 'DOUBLEQUOTE_R', ...] __author__ = 'M.E.Farmer Jr.' __credits__ = 'This was originally based on a python recipe\nsub...in my head.\nM.E.Farmer 2004, 2005\nPython license\n' __date__ = '15 February 2005' __file__ = r'.\PySourceColor.pyc' __name__ = 'PySourceColor' __title__ = 'PySourceColor' __version__ = '2.0' dark = {1: ('', '#DDDDDD', ''), 2: ('', '#FF0000', ''), 50: ('b', '#FAF785', ''), 51: ('s#FF0000', '#FF8080', ''), 52: ('', '#45FCA0', ''), 257: ('b', '#CCCCEE', ''), 258: ('i', '#A7C7A9', ''), 259: ('b', '#B666FD', ''), 260: ('b', '#EBAE5C', ''), 261: ('b', '#8680FF', ''), ...} dark2 = {1: ('', '#C0C0C0', ''), 2: ('b', '#00FF00', ''), 50: ('b', '#FF090F', ''), 51: ('', '#FF0000', ''), 52: ('i', '#D0D000', '#522000'), 257: ('b', '#EEEEEE', ''), 258: ('i', '#D0D000', '#522000'), 259: ('b', '#EE4080', ''), 260: ('b', '#FF8040', ''), 261: ('b', '#4726E1', ''), ...} defaultColors = {1: ('', '#333333', ''), 2: ('b', '#DD2200', ''), 50: ('b', '#000000', ''), 51: ('s#FF0000', '#FF8080', ''), 52: ('', '#007F00', ''), 257: ('b', '#000000', ''), 258: ('', '#608060', ''), 259: ('b', '#0000FF', ''), 260: ('b', '#9C7A00', ''), 261: ('b', '#0000AF', ''), ...} idle = {1: ('', '#000000', ''), 2: ('', '#000000', ''), 50: ('', '#000000', ''), 51: ('s#FF0000', '#FF8080', ''), 52: ('', '#DD0000', ''), 258: ('', '#DD0000', ''), 259: ('', '#0000FF', ''), 260: ('', '#0000FF', ''), 261: ('', '#FF7700', ''), 262: ('', '#00AA00', ''), ...} lite = {1: ('', '#333333', ''), 2: ('b', '#DD2200', ''), 50: ('b', '#000000', ''), 51: ('s#FF0000', '#FF8080', ''), 52: ('', '#007F00', ''), 257: ('b', '#000000', ''), 258: ('', '#608060', ''), 259: ('b', '#0000FF', ''), 260: ('b', '#9C7A00', ''), 261: ('b', '#0000AF', ''), ...} mono = {1: ('', '#000000', ''), 2: ('b', '#000000', ''), 50: ('b', '#000000', ''), 51: ('s#FF0000', '#FF8080', ''), 52: ('i', '#000000', ''), 257: ('b', '#000000', ''), 258: ('b', '#000000', ''), 259: ('bu', '#000000', ''), 260: ('b', '#000000', ''), 261: ('b', '#000000', ''), ...} null = {1: ('', '#000000', ''), 2: ('', '#000000', ''), 50: ('', '#000000', ''), 51: ('', '#000000', ''), 52: ('', '#000000', ''), 257: ('', '#000000', ''), 258: ('', '#000000', ''), 259: ('', '#000000', ''), 260: ('', '#000000', ''), 261: ('', '#000000', ''), ...} pythonwin = {1: ('', '#303030', ''), 2: ('', '#008080', ''), 50: ('', '#000000', ''), 51: ('s#FF0000', '#FF8080', ''), 52: ('', '#007F00', ''), 257: ('', '#000000', ''), 258: ('', '#7F7F7F', ''), 259: ('b', '#0000FF', ''), 260: ('b', '#007F7F', ''), 261: ('b', '#000080', ''), ...} viewcvs = {1: ('', '#000000', ''), 2: ('', '#000000', ''), 50: ('', '#000000', ''), 51: ('s#FF0000', '#FF8080', ''), 52: ('i', '#b22222', ''), 257: ('', '#000000', ''), 258: ('i', '#b22222', ''), 259: ('', '#000000', ''), 260: ('b', '#0000ff', ''), 261: ('b', '#a020f0', ''), ...} | ||
| Author | ||
| M.E.Farmer Jr. | ||
| Credits | ||
| This was originally based on a python recipe submitted by Jürgen Hermann to ASPN. Now based on the voices in my head. M.E.Farmer 2004, 2005 Python license | ||