From 998049ec9b786e88c8f584d93eaad5c9e215cd5d Mon Sep 17 00:00:00 2001 From: Peter Bacon Darwin Date: Wed, 12 Jul 2017 22:20:55 +0100 Subject: [PATCH] build(aio): truncate API overview parameters at one line --- .../rendering/truncateFirstLine.js | 13 +++++++++++++ .../rendering/truncateFirstLine.spec.js | 19 +++++++++++++++++++ .../api/includes/class-overview.html | 4 ++-- .../api/includes/interface-overview.html | 2 +- .../templates/api/lib/memberHelpers.html | 6 +++--- .../templates/api/lib/paramList.html | 4 ++-- 6 files changed, 40 insertions(+), 8 deletions(-) create mode 100644 aio/tools/transforms/angular-base-package/rendering/truncateFirstLine.js create mode 100644 aio/tools/transforms/angular-base-package/rendering/truncateFirstLine.spec.js diff --git a/aio/tools/transforms/angular-base-package/rendering/truncateFirstLine.js b/aio/tools/transforms/angular-base-package/rendering/truncateFirstLine.js new file mode 100644 index 0000000000..9070911625 --- /dev/null +++ b/aio/tools/transforms/angular-base-package/rendering/truncateFirstLine.js @@ -0,0 +1,13 @@ +module.exports = function() { + return { + name: 'truncateFirstLine', + process: function(str) { + const parts = str && str.split && str.split(/\r?\n/); + if (parts && parts.length > 1) { + return parts[0] + '...'; + } else { + return str; + } + } + }; +}; \ No newline at end of file diff --git a/aio/tools/transforms/angular-base-package/rendering/truncateFirstLine.spec.js b/aio/tools/transforms/angular-base-package/rendering/truncateFirstLine.spec.js new file mode 100644 index 0000000000..c2ad68554f --- /dev/null +++ b/aio/tools/transforms/angular-base-package/rendering/truncateFirstLine.spec.js @@ -0,0 +1,19 @@ +var factory = require('./truncateFirstLine'); + +describe('truncateFirstLine filter', function() { + var filter; + + beforeEach(function() { filter = factory(); }); + + it('should be called "truncateFirstLine"', + function() { expect(filter.name).toEqual('truncateFirstLine'); }); + + it('should return the whole string if only one line', function() { + expect(filter.process('this is a pretty long string that only exists on one line')) + .toEqual('this is a pretty long string that only exists on one line'); + }); + + it('should return the first line and an ellipsis if there is more than one line', function() { + expect(filter.process('some text\n \nmore text\n \n')).toEqual('some text...'); + }); +}); \ No newline at end of file diff --git a/aio/tools/transforms/templates/api/includes/class-overview.html b/aio/tools/transforms/templates/api/includes/class-overview.html index 08f50418bd..24b14d468d 100644 --- a/aio/tools/transforms/templates/api/includes/class-overview.html +++ b/aio/tools/transforms/templates/api/includes/class-overview.html @@ -5,9 +5,9 @@ {$ doc.docType $} {$ doc.name $}{$ doc.typeParams | escape $}{$ memberHelper.renderHeritage(doc) $} { {%- if doc.statics.length %}{% for member in doc.statics %}{% if not member.internal %} - {$ memberHelper.renderMember(member) $}{% endif %}{% endfor %}{% endif %} + {$ memberHelper.renderMember(member, true) $}{% endif %}{% endfor %}{% endif %} {%- if doc.members.length %}{% for member in doc.members %}{% if not member.internal %} - {$ memberHelper.renderMember(member) $}{% endif %}{% endfor %}{% endif %} + {$ memberHelper.renderMember(member, true) $}{% endif %}{% endfor %}{% endif %} } diff --git a/aio/tools/transforms/templates/api/includes/interface-overview.html b/aio/tools/transforms/templates/api/includes/interface-overview.html index 1652d37fba..8b3199b7ac 100644 --- a/aio/tools/transforms/templates/api/includes/interface-overview.html +++ b/aio/tools/transforms/templates/api/includes/interface-overview.html @@ -4,7 +4,7 @@

Interface Overview

interface {$ doc.name $}{$ doc.typeParams | escape $}{$ memberHelper.renderHeritage(doc) $} { {% if doc.members.length %}{% for member in doc.members %}{% if not member.internal %} - {$ memberHelper.renderMember(member) $}{% endif %}{% endfor %}{% endif %} + {$ memberHelper.renderMember(member, true) $}{% endif %}{% endfor %}{% endif %} } \ No newline at end of file diff --git a/aio/tools/transforms/templates/api/lib/memberHelpers.html b/aio/tools/transforms/templates/api/lib/memberHelpers.html index d180bc1ec3..5fcb26752a 100644 --- a/aio/tools/transforms/templates/api/lib/memberHelpers.html +++ b/aio/tools/transforms/templates/api/lib/memberHelpers.html @@ -9,14 +9,14 @@ {% endfor %}{% endif %} {%- endmacro -%} -{%- macro renderMember(member) -%} +{%- macro renderMember(member, truncate) -%} {%- if member.accessibility !== 'public' %}{$ member.accessibility $} {% endif -%} {%- if member.isGetAccessor %}get {% endif -%} {%- if member.isSetAccessor %}set {% endif -%} {%- if member.isStatic %}static {% endif -%} - {$ member.name $}{$ member.typeParameters | escape $}{$ params.paramList(member.parameters) | trim $} + {$ member.name $}{$ member.typeParameters | escape $}{$ params.paramList(member.parameters, truncate) | trim $} {%- if member.isOptional %}?{% endif -%} - {$ params.returnType(member.type) $} + {$ params.returnType(member.type) | trim | truncateFirstLine $} {%- endmacro -%} {%- macro renderMemberDetail(member, cssClass) -%} diff --git a/aio/tools/transforms/templates/api/lib/paramList.html b/aio/tools/transforms/templates/api/lib/paramList.html index f04063a824..d063dc2a91 100644 --- a/aio/tools/transforms/templates/api/lib/paramList.html +++ b/aio/tools/transforms/templates/api/lib/paramList.html @@ -1,7 +1,7 @@ -{% macro paramList(params) -%} +{% macro paramList(params, truncate) -%} {%- if params -%} ({%- for param in params -%} - {$ param | escape $}{% if not loop.last %}, {% endif %} + {% if truncate %}{$ param | escape | truncateFirstLine $}{% else %}{$ param | escape $}{% endif %}{% if not loop.last %}, {% endif %} {%- endfor %}) {%- endif %} {%- endmacro -%}