15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import urllib
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import urllib2
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class HiliteMeHighlighter(object):
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  """Highlighter that calls the http://hilite.me API to highlight code.
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  """
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  def GetCSS(self, style):
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return ''
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  def GetCodeElement(self, code, style):
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Call hilite.me API to do syntax highlighting
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return urllib2.urlopen('http://hilite.me/api',
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        urllib.urlencode([
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            ('code', code),
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            ('lexer', 'cpp'),
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            ('style', style),
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            ('linenos', 1)])
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ).read()
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  def DisplayName(self):
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return 'hilite.me (slow, requires internet)'
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  def GetStyles(self):
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return ['monokai', 'manni', 'perldoc', 'borland', 'colorful', 'default',
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        'murphy', 'vs', 'trac', 'tango', 'fruity', 'autumn', 'bw', 'emacs',
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        'vim', 'pastie', 'friendly', 'native']
31