Chromium Code Reviews| Index: src/harmony-templates.js |
| diff --git a/src/harmony-templates.js b/src/harmony-templates.js |
| index dd122cce85f28ae5e478af25fb9a1a8c8bbb2c9c..b272a628b2862565b73b6ca3eb2bf8f76fe54ac6 100644 |
| --- a/src/harmony-templates.js |
| +++ b/src/harmony-templates.js |
| @@ -12,3 +12,39 @@ function GetTemplateCallSite(siteObj, rawStrings) { |
| return %ObjectFreeze(siteObj); |
| } |
| + |
| + |
| +// ES6 Draft 10-14-2014, section 21.1.2.4 |
| +function StringRaw(callSite) { |
| + // TODO(*): Use rest parameters when implemented |
|
arv (Not doing code reviews)
2014/11/18 19:05:27
We always use a name here. The name should be of t
caitp (gmail)
2014/11/18 19:11:54
Done.
|
| + 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; |
| +} |
| + |
| + |
| +// ------------------------------------------------------------------- |
|
arv (Not doing code reviews)
2014/11/18 19:05:27
skip this line
caitp (gmail)
2014/11/18 19:11:54
Done.
|
| + |
| +function ExtendStringForTemplates() { |
| + %CheckIsBootstrapping(); |
| + |
| + // Set up the non-enumerable functions on the String object. |
| + InstallFunctions($String, DONT_ENUM, $Array( |
| + "raw", StringRaw |
| + )); |
| +} |
| + |
| +ExtendStringForTemplates(); |