home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- from pygments.formatter import Formatter
- from pygments.util import get_bool_opt, get_int_opt
- __all__ = [
- 'SvgFormatter']
-
- def escape_html(text):
- return text.replace('&', '&').replace('<', '<').replace('>', '>').replace('"', '"').replace("'", ''')
-
- class2style = { }
-
- class SvgFormatter(Formatter):
- name = 'SVG'
- aliases = [
- 'svg']
- filenames = [
- '*.svg']
-
- def __init__(self, **options):
- Formatter.__init__(self, **options)
- self.nowrap = get_bool_opt(options, 'nowrap', False)
- self.fontfamily = options.get('fontfamily', 'monospace')
- self.fontsize = options.get('fontsize', '14px')
- self.xoffset = get_int_opt(options, 'xoffset', 0)
- fs = self.fontsize.strip()
- if fs.endswith('px'):
- fs = fs[:-2].strip()
-
-
- try:
- int_fs = int(fs)
- except:
- int_fs = 20
-
- self.yoffset = get_int_opt(options, 'yoffset', int_fs)
- self.ystep = get_int_opt(options, 'ystep', int_fs + 5)
- self.spacehack = get_bool_opt(options, 'spacehack', True)
- self._stylecache = { }
-
-
- def format_unencoded(self, tokensource, outfile):
- x = self.xoffset
- y = self.yoffset
- if not self.nowrap:
- if self.encoding:
- outfile.write('<?xml version="1.0" encoding="%s"?>\n' % self.encoding)
- else:
- outfile.write('<?xml version="1.0"?>\n')
- outfile.write('<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">\n')
- outfile.write('<svg xmlns="http://www.w3.org/2000/svg">\n')
- outfile.write('<g font-family="%s" font-size="%s">\n' % (self.fontfamily, self.fontsize))
-
- outfile.write('<text x="%s" y="%s" xml:space="preserve">' % (x, y))
- for ttype, value in tokensource:
- style = self._get_style(ttype)
- if not style or '<tspan' + style + '>':
- pass
- tspan = ''
- if not tspan or '</tspan>':
- pass
- tspanend = ''
- value = escape_html(value)
- if self.spacehack:
- value = value.expandtabs().replace(' ', ' ')
-
- parts = value.split('\n')
- for part in parts[:-1]:
- outfile.write(tspan + part + tspanend)
- y += self.ystep
- outfile.write('</text>\n<text x="%s" y="%s" xml:space="preserve">' % (x, y))
-
- outfile.write(tspan + parts[-1] + tspanend)
-
- outfile.write('</text>')
- if not self.nowrap:
- outfile.write('</g></svg>\n')
-
-
-
- def _get_style(self, tokentype):
- if tokentype in self._stylecache:
- return self._stylecache[tokentype]
- otokentype = tokentype
- while not self.style.styles_token(tokentype):
- tokentype = tokentype.parent
- continue
- tokentype in self._stylecache
- value = self.style.style_for_token(tokentype)
- result = ''
- if value['color']:
- result = ' fill="#' + value['color'] + '"'
-
- if value['bold']:
- result += ' font-weight="bold"'
-
- if value['italic']:
- result += ' font-style="italic"'
-
- self._stylecache[otokentype] = result
- return result
-
-
-