| Index: src/string.js
|
| diff --git a/src/string.js b/src/string.js
|
| index 71b4e7e398e77d2b99175c82360b58d18b7fd234..6286be3e49d42e8e4fcad7c8b9286e3419d35b40 100644
|
| --- a/src/string.js
|
| +++ b/src/string.js
|
| @@ -1091,6 +1091,29 @@ function StringFromCodePoint(_) { // length = 1
|
| }
|
|
|
|
|
| +// -------------------------------------------------------------------
|
| +// String methods related to templates
|
| +
|
| +// ES6 Draft 03-17-2015, section 21.1.2.4
|
| +function StringRaw(callSite) {
|
| + // TODO(caitp): Use rest parameters when implemented
|
| + var numberOfSubstitutions = %_ArgumentsLength();
|
| + var cooked = ToObject(callSite);
|
| + var raw = ToObject(cooked.raw);
|
| + var literalSegments = ToLength(raw.length);
|
| + if (literalSegments <= 0) return "";
|
| +
|
| + var result = ToString(raw[0]);
|
| +
|
| + for (var i = 1; i < literalSegments; ++i) {
|
| + if (i < numberOfSubstitutions) {
|
| + result += ToString(%_Arguments(i));
|
| + }
|
| + result += ToString(raw[i]);
|
| + }
|
| +
|
| + return result;
|
| +}
|
|
|
| // -------------------------------------------------------------------
|
|
|
| @@ -1105,7 +1128,8 @@ function StringFromCodePoint(_) { // length = 1
|
| // Set up the non-enumerable functions on the String object.
|
| InstallFunctions(GlobalString, DONT_ENUM, GlobalArray(
|
| "fromCharCode", StringFromCharCode,
|
| - "fromCodePoint", StringFromCodePoint
|
| + "fromCodePoint", StringFromCodePoint,
|
| + "raw", StringRaw
|
| ));
|
|
|
| // Set up the non-enumerable functions on the String prototype object.
|
|
|