1
|
'use strict';
|
2
|
|
3
|
var trimStart = require('string.prototype.trimleft');
|
4
|
var trimEnd = require('string.prototype.trimright');
|
5
|
|
6
|
var GetIntrinsic = require('../GetIntrinsic');
|
7
|
|
8
|
var $TypeError = GetIntrinsic('%TypeError%');
|
9
|
|
10
|
var RequireObjectCoercible = require('./RequireObjectCoercible');
|
11
|
var ToString = require('./ToString');
|
12
|
|
13
|
// https://ecma-international.org/ecma-262/10.0/#sec-trimstring
|
14
|
|
15
|
module.exports = function TrimString(string, where) {
|
16
|
var str = RequireObjectCoercible(string);
|
17
|
var S = ToString(str);
|
18
|
var T;
|
19
|
if (where === 'start') {
|
20
|
T = trimStart(S);
|
21
|
} else if (where === 'end') {
|
22
|
T = trimEnd(S);
|
23
|
} else if (where === 'start+end') {
|
24
|
T = trimStart(trimEnd(S));
|
25
|
} else {
|
26
|
throw new $TypeError('Assertion failed: invalid `where` value; must be "start", "end", or "start+end"');
|
27
|
}
|
28
|
return T;
|
29
|
};
|