1var $export = require('./_export');
2var defined = require('./_defined');
3var fails = require('./_fails');
4var spaces = require('./_string-ws');
5var space = '[' + spaces + ']';
6var non = '\u200b\u0085';
7var ltrim = RegExp('^' + space + space + '*');
8var rtrim = RegExp(space + space + '*$');
9
10var exporter = function (KEY, exec, ALIAS) {
11  var exp = {};
12  var FORCE = fails(function () {
13    return !!spaces[KEY]() || non[KEY]() != non;
14  });
15  var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];
16  if (ALIAS) exp[ALIAS] = fn;
17  $export($export.P + $export.F * FORCE, 'String', exp);
18};
19
20// 1 -> String#trimLeft
21// 2 -> String#trimRight
22// 3 -> String#trim
23var trim = exporter.trim = function (string, TYPE) {
24  string = String(defined(string));
25  if (TYPE & 1) string = string.replace(ltrim, '');
26  if (TYPE & 2) string = string.replace(rtrim, '');
27  return string;
28};
29
30module.exports = exporter;
31