diff --git a/src/ngSanitize/filter/linky.js b/src/ngSanitize/filter/linky.js index 2780d74c0b33..e0dfb0e3c43b 100644 --- a/src/ngSanitize/filter/linky.js +++ b/src/ngSanitize/filter/linky.js @@ -133,9 +133,10 @@ angular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) { var LINKY_URL_REGEXP = /((ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i, MAILTO_REGEXP = /^mailto:/i; + var isString = angular.isString; return function(text, target, attributes) { - if (!text) return text; + if (!text || !isString(text)) return text; var match; var raw = text; var html = []; diff --git a/test/ngSanitize/filter/linkySpec.js b/test/ngSanitize/filter/linkySpec.js index a3dafb18ddce..3596f5ff56b0 100644 --- a/test/ngSanitize/filter/linkySpec.js +++ b/test/ngSanitize/filter/linkySpec.js @@ -20,6 +20,14 @@ describe('linky', function() { expect(linky(undefined)).not.toBeDefined(); }); + it('should return non-string, truthy values unchanged', function() { + expect(linky(true)).toBe(true); + expect(linky(42)).toBe(42); + expect(linky([])).toEqual([]); + expect(linky({})).toEqual({}); + expect(linky(noop)).toBe(noop); + }); + it('should be case-insensitive', function() { expect(linky('WWW.example.com')).toEqual('WWW.example.com'); expect(linky('WWW.EXAMPLE.COM')).toEqual('WWW.EXAMPLE.COM');