123456789101112131415161718192021222324252627 |
- 'use strict';
- var uncurryThis = require('../internals/function-uncurry-this');
- var toIndexedObject = require('../internals/to-indexed-object');
- var toString = require('../internals/to-string');
- var lengthOfArrayLike = require('../internals/length-of-array-like');
-
- var $TypeError = TypeError;
- var push = uncurryThis([].push);
- var join = uncurryThis([].join);
-
- // `String.cooked` method
- // https://tc39.es/proposal-string-cooked/
- module.exports = function cooked(template /* , ...substitutions */) {
- var cookedTemplate = toIndexedObject(template);
- var literalSegments = lengthOfArrayLike(cookedTemplate);
- if (!literalSegments) return '';
- var argumentsLength = arguments.length;
- var elements = [];
- var i = 0;
- while (true) {
- var nextVal = cookedTemplate[i++];
- if (nextVal === undefined) throw new $TypeError('Incorrect template');
- push(elements, toString(nextVal));
- if (i === literalSegments) return join(elements, '');
- if (i < argumentsLength) push(elements, toString(arguments[i]));
- }
- };
|