Skip to content

Commit

Permalink
feat(filter): allow map of filters to be registered in $FilterProvider
Browse files Browse the repository at this point in the history
This feature adds similar functionality to what `$ControllerProvider.register` and `$CompileProvider.directive` currently provide by allowing a map of filter name/factories to be passed as the sole argument to `$FilterProvider.register` to register all of the specified filters.

Closes angular#4036
  • Loading branch information
colincasey committed Sep 21, 2013
1 parent e2068ad commit fecfa16
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 1 deletion.
8 changes: 7 additions & 1 deletion src/ng/filter.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,13 @@ function $FilterProvider($provide) {
var suffix = 'Filter';

function register(name, factory) {
return $provide.factory(name + suffix, factory);
if(isObject(name)) {
forEach(name, function(filter, key) {
register(key, filter);
});
} else {
return $provide.factory(name + suffix, factory);
}
}
this.register = register;

Expand Down
53 changes: 53 additions & 0 deletions test/ng/filterSpec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
'use strict';

describe('$filter', function() {
var $filterProvider, $filter;

beforeEach(module(function(_$filterProvider_) {
$filterProvider = _$filterProvider_;
}));

beforeEach(inject(function(_$filter_) {
$filter = _$filter_;
}));

describe('provider', function() {
it('should allow registration of filters', function() {
var FooFilter = function() {
return function() {
return 'foo';
}
};

$filterProvider.register('foo', FooFilter);

var fooFilter = $filter('foo');
expect(fooFilter()).toBe('foo');
});

it('should allow registration of a map of filters', function() {
var FooFilter = function() {
return function() {
return 'foo';
}
};

var BarFilter = function() {
return function() {
return 'bar';
}
};

$filterProvider.register({
'foo': FooFilter,
'bar': BarFilter
});

var fooFilter = $filter('foo');
expect(fooFilter()).toBe('foo');

var barFilter = $filter('bar');
expect(barFilter()).toBe('bar');
});
});
});

0 comments on commit fecfa16

Please sign in to comment.