build(aio): truncate API overview parameters at one line
This commit is contained in:

committed by
Igor Minar

parent
660eec4a23
commit
f06ce9adc8
49
aio/tools/transforms/angular-base-package/rendering/truncateCode.js
vendored
Normal file
49
aio/tools/transforms/angular-base-package/rendering/truncateCode.js
vendored
Normal file
@ -0,0 +1,49 @@
|
||||
module.exports = function() {
|
||||
return {
|
||||
name: 'truncateCode',
|
||||
process: function(str, lines) {
|
||||
if (lines === undefined) return str;
|
||||
|
||||
const parts = str && str.split && str.split(/\r?\n/);
|
||||
if (parts && parts.length > lines) {
|
||||
return balance(parts[0] + '...', ['{', '(', '['], ['}', ')', ']']);
|
||||
} else {
|
||||
return str;
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* Try to balance the brackets by adding closers on to the end of a string
|
||||
* for every bracket that is left open.
|
||||
* The chars at each index in the openers and closers should match (i.e openers = ['{', '('], closers = ['}', ')'])
|
||||
*
|
||||
* @param {string} str The string to balance
|
||||
* @param {string[]} openers an array of chars that open a bracket
|
||||
* @param {string[]} closers an array of chars that close a brack
|
||||
* @returns the balanced string
|
||||
*/
|
||||
function balance(str, openers, closers) {
|
||||
const stack = [];
|
||||
|
||||
// Add each open bracket to the stack, removing them when there is a matching closer
|
||||
str.split('').forEach(function(char) {
|
||||
const closerIndex = closers.indexOf(char);
|
||||
if (closerIndex !== -1 && stack[stack.length-1] === closerIndex) {
|
||||
stack.pop();
|
||||
} else {
|
||||
const openerIndex = openers.indexOf(char);
|
||||
if (openerIndex !== -1) {
|
||||
stack.push(openerIndex);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Now the stack should contain all the unclosed brackets
|
||||
while(stack.length) {
|
||||
str += closers[stack.pop()];
|
||||
}
|
||||
|
||||
return str;
|
||||
}
|
Reference in New Issue
Block a user