extra spaces not required for named functions (iirc). So here, it can be:

    function compile(element, attribute)

It's only for anonymous functions that we prefer to have spaces, like:

    var myAwesomeFunc = function (arg1) {
      return 'unicorns';
    }

Is it absolutely necessary to have named functions here, given the returned object already has a key for the function? Or something Angular needs that I am missing?