diff --git a/public/api-builder/angular.io-package/index.js b/public/api-builder/angular.io-package/index.js index 2a1a81706b..d4ceca02ac 100644 --- a/public/api-builder/angular.io-package/index.js +++ b/public/api-builder/angular.io-package/index.js @@ -73,8 +73,11 @@ module.exports = new Package('angular.io', [basePackage]) .config(function(templateEngine, getInjectables) { - templateEngine.filters = templateEngine.filters.concat(getInjectables([require('./rendering/trimBlankLines')])); - templateEngine.filters = templateEngine.filters.concat(getInjectables([require('./rendering/indentForMarkdown')])); -}); + templateEngine.filters = templateEngine.filters.concat(getInjectables([ + require('./rendering/trimBlankLines'), + require('./rendering/toId'), + require('./rendering/indentForMarkdown') + ])); +}) diff --git a/public/api-builder/angular.io-package/rendering/toId.js b/public/api-builder/angular.io-package/rendering/toId.js new file mode 100644 index 0000000000..66568b8284 --- /dev/null +++ b/public/api-builder/angular.io-package/rendering/toId.js @@ -0,0 +1,8 @@ +module.exports = function toId() { + return { + name: 'toId', + process: function(str) { + return str.replace(/[^(a-z)(A-Z)(0-9)._-]/g, '-'); + } + }; +}; \ No newline at end of file diff --git a/public/api-builder/angular.io-package/rendering/toId.spec.js b/public/api-builder/angular.io-package/rendering/toId.spec.js new file mode 100644 index 0000000000..cc342c60d0 --- /dev/null +++ b/public/api-builder/angular.io-package/rendering/toId.spec.js @@ -0,0 +1,18 @@ +var factory = require('./toId'); + +describe('toId filter', function() { + var filter; + + beforeEach(function() { + filter = factory(); + }); + + it('should be called "toId"', function() { + expect(filter.name).toEqual('toId'); + }); + + it('should convert a string to make it appropriate for use as an HTML id', function() { + expect(filter.process('This is a big string with €bad#characaters¢\nAnd even NewLines')) + .toEqual('This-is-a-big-string-with--bad-characaters--And-even-NewLines'); + }); +}); \ No newline at end of file diff --git a/public/api-builder/angular.io-package/templates/class.template.html b/public/api-builder/angular.io-package/templates/class.template.html index 851086a4d4..08a8ee3c08 100644 --- a/public/api-builder/angular.io-package/templates/class.template.html +++ b/public/api-builder/angular.io-package/templates/class.template.html @@ -30,7 +30,7 @@ p.location-badge. {%- if doc.constructorDoc %} .l-sub-section - h3 {$ doc.constructorDoc.name $} + h3#{$ doc.constructorDoc.name | toId $} {$ doc.constructorDoc.name $} {% if doc.constructorDoc.parameters %} pre.prettyprint @@ -45,7 +45,7 @@ p.location-badge. {%- for member in doc.members %}{% if not member.private %} .l-sub-section - h3 {$ member.name $}{% if member.optional %}?{% endif %} + h3#{$ member.name | toId $} {$ member.name $}{% if member.optional %}?{% endif %} {% if member.parameters %} pre.prettyprint