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.
5 from base64
import b64encode
6 from hashlib
import sha1
10 '''Normalize a key by making sure it has a .html extension, and convert any
13 if key
.endswith('.html'):
14 key
= key
[:-len('.html')]
15 safe_key
= key
.replace('.', '_')
16 return '%s.html' % safe_key
18 def SanitizeAPIName(name
):
19 '''Sanitizes API filenames that are in subdirectories.
21 filename
= os
.path
.splitext(name
)[0].replace(os
.sep
, '_')
22 if 'experimental' in filename
:
23 filename
= 'experimental_' + filename
.replace('experimental_', '')
26 def StringIdentity(first
, *more
):
27 '''Creates a small hash of a string.
30 return b64encode(sha1(string
).digest())
31 identity
= encode(first
)
33 identity
= encode(identity
+ m
)
37 '''Adds a property 'first' == True to the first element in a list of dicts.
40 dicts
[0]['first'] = True
43 '''Adds a property 'last' == True to the last element in a list of dicts.
46 dicts
[-1]['last'] = True
48 def MarkFirstAndLast(dicts
):
49 '''Marks the first and last element in a list of dicts.
55 '''Returns the str |data| as a unicode object. It's expected to be utf8, but
56 there are also latin-1 encodings in there for some reason. Fall back to that.
59 return unicode(data
, 'utf-8')
61 return unicode(data
, 'latin-1')