def extract_leftmost_selector(selector_list):
    """
    Because we aren't building a DOM tree to transverse, the only way
    to get the most general selectors is to take the leftmost. 
    For example with `div.outer div.inner`, we can't tell if `div.inner`
    has been used in context without building a tree.
    """
    classes = set()
    ids = set()
    elements = set()
    #    print "Selector list: %s \n\n\n\n\n\n" % selector_list
    for selector in selector_list:
        selector = selector.split()[0]
        if selector[0] == '.':
            classes.add(selector)
        elif selector[0] == '#':
            ids.add(selector)
        else:
            elements.add(selector)
    return { 
             'classes':classes,
             'ids':ids,
             'elements':elements,
             }
Because we aren't building a DOM tree to transverse, the only way
    to get the most general selectors is to take the leftmost. 
    For example with `div.outer div.inner`, we can't tell if `div.inner`
    has been used in context without building a tree.