You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
876 B
27 lines
876 B
'use strict'; |
|
|
|
var $TypeError = require('es-errors/type'); |
|
|
|
var StringPad = require('./StringPad'); |
|
var ToLength = require('./ToLength'); |
|
var ToString = require('./ToString'); |
|
|
|
// https://262.ecma-international.org/15.0/#sec-stringpaddingbuiltinsimpl |
|
|
|
module.exports = function StringPaddingBuiltinsImpl(O, maxLength, fillString, placement) { |
|
if (placement !== 'start' && placement !== 'end' && placement !== 'START' && placement !== 'END') { |
|
throw new $TypeError('Assertion failed: `placement` must be ~START~ or ~END~'); |
|
} |
|
|
|
var S = ToString(O); // step 1 |
|
|
|
var intMaxLength = ToLength(maxLength); // step 2 |
|
|
|
var stringLength = S.length; // step 3 |
|
|
|
if (intMaxLength <= stringLength) { return S; } // step 4 |
|
|
|
var filler = typeof fillString === 'undefined' ? ' ' : ToString(fillString); // steps 5-6 |
|
|
|
return StringPad(S, intMaxLength, filler, placement); // step 7 |
|
};
|
|
|