Skip to content

Commit fecfa16

Browse files
committed
feat(filter): allow map of filters to be registered in $FilterProvider
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
1 parent e2068ad commit fecfa16

File tree

2 files changed

+60
-1
lines changed

2 files changed

+60
-1
lines changed

src/ng/filter.js

+7-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,13 @@ function $FilterProvider($provide) {
7979
var suffix = 'Filter';
8080

8181
function register(name, factory) {
82-
return $provide.factory(name + suffix, factory);
82+
if(isObject(name)) {
83+
forEach(name, function(filter, key) {
84+
register(key, filter);
85+
});
86+
} else {
87+
return $provide.factory(name + suffix, factory);
88+
}
8389
}
8490
this.register = register;
8591

test/ng/filterSpec.js

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
'use strict';
2+
3+
describe('$filter', function() {
4+
var $filterProvider, $filter;
5+
6+
beforeEach(module(function(_$filterProvider_) {
7+
$filterProvider = _$filterProvider_;
8+
}));
9+
10+
beforeEach(inject(function(_$filter_) {
11+
$filter = _$filter_;
12+
}));
13+
14+
describe('provider', function() {
15+
it('should allow registration of filters', function() {
16+
var FooFilter = function() {
17+
return function() {
18+
return 'foo';
19+
}
20+
};
21+
22+
$filterProvider.register('foo', FooFilter);
23+
24+
var fooFilter = $filter('foo');
25+
expect(fooFilter()).toBe('foo');
26+
});
27+
28+
it('should allow registration of a map of filters', function() {
29+
var FooFilter = function() {
30+
return function() {
31+
return 'foo';
32+
}
33+
};
34+
35+
var BarFilter = function() {
36+
return function() {
37+
return 'bar';
38+
}
39+
};
40+
41+
$filterProvider.register({
42+
'foo': FooFilter,
43+
'bar': BarFilter
44+
});
45+
46+
var fooFilter = $filter('foo');
47+
expect(fooFilter()).toBe('foo');
48+
49+
var barFilter = $filter('bar');
50+
expect(barFilter()).toBe('bar');
51+
});
52+
});
53+
});

0 commit comments

Comments
 (0)