<filename>pptx/opc/shared.py
# encoding: utf-8

"""
Objects shared by modules in the pptx.opc sub-package
"""

from __future__ import absolute_import, print_function, unicode_literals


class CaseInsensitiveDict(dict):
    """
    Mapping type that behaves like dict except that it matches without respect
    to the case of the key. E.g. cid['A'] == cid['a']. Note this is not
    general-purpose, just complete enough to satisfy opc package needs. It
    assumes str keys for example.
    """

    def __contains__(self, key):
        return super(CaseInsensitiveDict, self).__contains__(key.lower())

    def __getitem__(self, key):
        return super(CaseInsensitiveDict, self).__getitem__(key.lower())

    def __setitem__(self, key, value):
        return super(CaseInsensitiveDict, self).__setitem__(key.lower(), value)
