# Copyright (c) 2012 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

from base64 import b64encode
from hashlib import sha1
import os

def FormatKey(key):
  '''Normalize a key by making sure it has a .html extension, and convert any
  '.'s to '_'s.
  '''
  if key.endswith('.html'):
    key = key[:-len('.html')]
  safe_key = key.replace('.', '_')
  return '%s.html' % safe_key

def SanitizeAPIName(name):
  '''Sanitizes API filenames that are in subdirectories.
  '''
  filename = os.path.splitext(name)[0].replace(os.sep, '_')
  if 'experimental' in filename:
    filename = 'experimental_' + filename.replace('experimental_', '')
  return filename

def StringIdentity(string):
  '''Creates a small hash of a string.
  '''
  return b64encode(sha1(string).digest())[:8]

def MarkLast(dicts):
  '''Adds a property 'last' == True to the last element in a list of dicts.
  '''
  if len(dicts) > 0:
    dicts[-1]['last'] = True
