diff options
| author | Brian Ford | 2012-07-19 01:10:12 -0700 | 
|---|---|---|
| committer | Igor Minar | 2012-08-13 12:36:33 -0700 | 
| commit | d010e0cc7d3cbb5f219f1b5676b082db623f0927 (patch) | |
| tree | d6a753963c97f04aee2c8751a4c4c8729ce1ad37 | |
| parent | 40f728b1aafcf1775cc5c1f230484af6979635b6 (diff) | |
| download | angular.js-d010e0cc7d3cbb5f219f1b5676b082db623f0927.tar.bz2 | |
fix(ngPluralize): fixes ng-pluralize when using non-standard start/end symbols
Closes #1134
| -rw-r--r-- | src/ng/directive/ngPluralize.js | 7 | ||||
| -rw-r--r-- | test/ng/directive/ngPluralizeSpec.js | 37 | 
2 files changed, 42 insertions, 2 deletions
diff --git a/src/ng/directive/ngPluralize.js b/src/ng/directive/ngPluralize.js index a3424cf5..d9327b82 100644 --- a/src/ng/directive/ngPluralize.js +++ b/src/ng/directive/ngPluralize.js @@ -178,11 +178,14 @@ var ngPluralizeDirective = ['$locale', '$interpolate', function($locale, $interp            whenExp = element.attr(attr.$attr.when), // this is because we have {{}} in attrs            offset = attr.offset || 0,            whens = scope.$eval(whenExp), -          whensExpFns = {}; +          whensExpFns = {}, +          startSymbol = $interpolate.startSymbol(), +          endSymbol = $interpolate.endSymbol();        forEach(whens, function(expression, key) {          whensExpFns[key] = -          $interpolate(expression.replace(BRACE, '{{' + numberExp + '-' + offset + '}}')); +          $interpolate(expression.replace(BRACE, startSymbol + numberExp + '-' + +            offset + endSymbol));        });        scope.$watch(function() { diff --git a/test/ng/directive/ngPluralizeSpec.js b/test/ng/directive/ngPluralizeSpec.js index c382f4f4..e790518c 100644 --- a/test/ng/directive/ngPluralizeSpec.js +++ b/test/ng/directive/ngPluralizeSpec.js @@ -133,4 +133,41 @@ describe('ngPluralize', function() {        expect(element.text()).toBe('Igor, Misko and 2 other people are viewing.');      }));    }); + + +  describe('interpolation', function() { + +    it('should support custom interpolation symbols', function() { +      module(function($interpolateProvider) { +        $interpolateProvider.startSymbol('[[').endSymbol('%%'); +      }); + +      inject(function($compile, $rootScope) { +        element = $compile( +            "<ng:pluralize count=\"viewCount\" offset=\"1\"" + +              "when=\"{'0': 'Nobody is viewing.'," + +                      "'1': '[[p1%% is viewing.'," + +                      "'one': '[[p1%% and one other person are viewing.'," + +                      "'other': '[[p1%% and {} other people are viewing.'}\">" + +            "</ng:pluralize>")($rootScope); +        $rootScope.p1 = 'Igor'; + +        $rootScope.viewCount = 0; +        $rootScope.$digest(); +        expect(element.text()).toBe('Nobody is viewing.'); + +        $rootScope.viewCount = 1; +        $rootScope.$digest(); +        expect(element.text()).toBe('Igor is viewing.'); + +        $rootScope.viewCount = 2; +        $rootScope.$digest(); +        expect(element.text()).toBe('Igor and one other person are viewing.'); + +        $rootScope.viewCount = 3; +        $rootScope.$digest(); +        expect(element.text()).toBe('Igor and 2 other people are viewing.'); +      }); +    }) +  });  });  | 
