import re


def apply_abbreviations(text, abbreviations, maximum_length=117):
    """
    Abbreviates words until status text does not exceed the maximum length.

    Not all abbreviations are necessarily applied; the function iterates
    abbreviation-by-abbreviation, checking length after each substitution.

    Args:
        text (str): A tweet's status text.
        abbreviations (OrderedDict): An ``OrderedDict`` keyed to a word with its abbreviation as the value.
        maximum_length (int): Maximum character length.

    Returns:
        str: New status text
    """
    new_text = text
    for not_abbreviated, abbreviated in abbreviations.items():
        pattern = ''.join([r'\b', not_abbreviated, r'\b'])
        regex = re.compile(pattern)
        new_text = regex.sub(abbreviated, new_text)
        if len(new_text) <= maximum_length:
            return new_text
    return new_text