1# Copyright (c) 2012 The Chromium Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5from base64 import b64encode 6from hashlib import sha1 7import os 8 9def FormatKey(key): 10 '''Normalize a key by making sure it has a .html extension, and convert any 11 '.'s to '_'s. 12 ''' 13 if key.endswith('.html'): 14 key = key[:-len('.html')] 15 safe_key = key.replace('.', '_') 16 return '%s.html' % safe_key 17 18def SanitizeAPIName(name): 19 '''Sanitizes API filenames that are in subdirectories. 20 ''' 21 filename = os.path.splitext(name)[0].replace(os.sep, '_') 22 if 'experimental' in filename: 23 filename = 'experimental_' + filename.replace('experimental_', '') 24 return filename 25 26def StringIdentity(string): 27 '''Creates a small hash of a string. 28 ''' 29 return b64encode(sha1(string).digest())[:8] 30 31def MarkLast(dicts): 32 '''Adds a property 'last' == True to the last element in a list of dicts. 33 ''' 34 if len(dicts) > 0: 35 dicts[-1]['last'] = True 36 37def ToUnicode(data): 38 '''Returns the str |data| as a unicode object. It's expected to be utf8, but 39 there are also latin-1 encodings in there for some reason. Fall back to that. 40 ''' 41 try: 42 return unicode(data, 'utf-8') 43 except: 44 return unicode(data, 'latin-1') 45