diff options
Diffstat (limited to 'pygments/formatters/rtf.py')
-rw-r--r-- | pygments/formatters/rtf.py | 53 |
1 files changed, 25 insertions, 28 deletions
diff --git a/pygments/formatters/rtf.py b/pygments/formatters/rtf.py index cf65a927..abecd484 100644 --- a/pygments/formatters/rtf.py +++ b/pygments/formatters/rtf.py @@ -48,8 +48,6 @@ class RtfFormatter(Formatter): aliases = ['rtf'] filenames = ['*.rtf'] - unicodeoutput = False - def __init__(self, **options): """ Additional options accepted: @@ -67,14 +65,14 @@ class RtfFormatter(Formatter): self.fontsize = get_int_opt(options, 'fontsize', 0) def _escape(self, text): - return text.replace('\\', '\\\\') \ - .replace('{', '\\{') \ - .replace('}', '\\}') + return text.replace(u'\\', u'\\\\') \ + .replace(u'{', u'\\{') \ + .replace(u'}', u'\\}') def _escape_text(self, text): # empty strings, should give a small performance improvment if not text: - return '' + return u'' # escape text text = self._escape(text) @@ -87,22 +85,21 @@ class RtfFormatter(Formatter): buf.append(str(c)) elif (2**7) <= cn < (2**16): # single unicode escape sequence - buf.append(r'{\u%d}' % cn) + buf.append(u'{\\u%d}' % cn) elif (2**16) <= cn: # RTF limits unicode to 16 bits. # Force surrogate pairs - h,l = _surrogatepair(cn) - buf.append(r'{\u%d}{\u%d}' % (h,l)) + buf.append(u'{\\u%d}{\\u%d}' % _surrogatepair(cn)) - return ''.join(buf).replace('\n', '\\par\n') + return u''.join(buf).replace(u'\n', u'\\par\n') def format_unencoded(self, tokensource, outfile): # rtf 1.8 header - outfile.write(r'{\rtf1\ansi\uc0\deff0' - r'{\fonttbl{\f0\fmodern\fprq1\fcharset0%s;}}' - r'{\colortbl;' % (self.fontface and - ' ' + self._escape(self.fontface) or - '')) + outfile.write(u'{\\rtf1\\ansi\\uc0\\deff0' + u'{\\fonttbl{\\f0\\fmodern\\fprq1\\fcharset0%s;}}' + u'{\\colortbl;' % (self.fontface and + u' ' + self._escape(self.fontface) or + u'')) # convert colors and save them in a mapping to access them later. color_mapping = {} @@ -111,15 +108,15 @@ class RtfFormatter(Formatter): for color in style['color'], style['bgcolor'], style['border']: if color and color not in color_mapping: color_mapping[color] = offset - outfile.write(r'\red%d\green%d\blue%d;' % ( + outfile.write(u'\\red%d\\green%d\\blue%d;' % ( int(color[0:2], 16), int(color[2:4], 16), int(color[4:6], 16) )) offset += 1 - outfile.write(r'}\f0 ') + outfile.write(u'}\\f0 ') if self.fontsize: - outfile.write(r'\fs%d' % (self.fontsize)) + outfile.write(u'\\fs%d' % (self.fontsize)) # highlight stream for ttype, value in tokensource: @@ -128,23 +125,23 @@ class RtfFormatter(Formatter): style = self.style.style_for_token(ttype) buf = [] if style['bgcolor']: - buf.append(r'\cb%d' % color_mapping[style['bgcolor']]) + buf.append(u'\\cb%d' % color_mapping[style['bgcolor']]) if style['color']: - buf.append(r'\cf%d' % color_mapping[style['color']]) + buf.append(u'\\cf%d' % color_mapping[style['color']]) if style['bold']: - buf.append(r'\b') + buf.append(u'\\b') if style['italic']: - buf.append(r'\i') + buf.append(u'\\i') if style['underline']: - buf.append(r'\ul') + buf.append(u'\\ul') if style['border']: - buf.append(r'\chbrdr\chcfpat%d' % + buf.append(u'\\chbrdr\\chcfpat%d' % color_mapping[style['border']]) - start = ''.join(buf) + start = u''.join(buf) if start: - outfile.write('{%s ' % start) + outfile.write(u'{%s ' % start) outfile.write(self._escape_text(value)) if start: - outfile.write('}') + outfile.write(u'}') - outfile.write('}') + outfile.write(u'}') |