🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

scope

Package Overview
Dependencies
Maintainers
0
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

scope - npm Package Compare versions

Comparing version
0.10.0
to
0.10.1
+5
-8
browser/scope.js

@@ -17,3 +17,3 @@ (function() {

/*
* Scopejs v0.9.0
* Scopejs v0.10.1
* http://scopejs.org

@@ -119,5 +119,2 @@ *

})()).join('') || "";
if (typeof this.set === "function") {
this.set('__context', context);
}
return this._eval.call(context, locals + literals + literalize_(expr));

@@ -173,5 +170,2 @@ };

this.parent = this.options.parent;
if (!this.parent) {
this.options.locals.__context = null;
}
names = [];

@@ -220,3 +214,3 @@ for (_j = 0, _len2 = varTypes.length; _j < _len2; _j++) {

x = exports[_n];
this[x] = C.makeGetter(x)();
this[x] = C.makeGetter(x).call(this);
}

@@ -227,2 +221,5 @@ }

Scope.prototype.run = Scope.run;
Scope.prototype.self = function(f) {
return f.call(this);
};
Scope.prototype.set = function(name, val, isLiteral) {

@@ -229,0 +226,0 @@ var obj, _len, _ref, _results;

<!DOCTYPE html> <html> <head> <title>scope.coffee</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <link rel="stylesheet" media="all" href="docco.css" /> </head> <body> <div id="container"> <div id="background"></div> <table cellpadding="0" cellspacing="0"> <thead> <tr> <th class="docs"> <h1> scope.coffee </h1> </th> <th class="code"> </th> </tr> </thead> <tbody> <tr id="section-1"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-1">&#182;</a> </div> <p>File header.</p>
<h1>#</h1> </td> <td class="code"> <div class="highlight"><pre> <span class="o">*</span> <span class="nx">Scopejs</span> <span class="nx">v0</span><span class="p">.</span><span class="mf">9.0</span>
<h1>#</h1> </td> <td class="code"> <div class="highlight"><pre> <span class="o">*</span> <span class="nx">Scopejs</span> <span class="nx">v0</span><span class="p">.</span><span class="mf">10.1</span>
<span class="o">*</span> <span class="nx">http</span><span class="o">:</span><span class="err">//scopejs.org</span>

@@ -9,7 +9,20 @@ <span class="o">*</span>

Visit <a href="http://scopejs.org">scopejs.org</a> for more information.</p> </td> <td class="code"> <div class="highlight"><pre></pre></div> </td> </tr> <tr id="section-4"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-4">&#182;</a> </div> <h2>Helpers</h2> </td> <td class="code"> <div class="highlight"><pre></pre></div> </td> </tr> <tr id="section-5"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-5">&#182;</a> </div> <p>isString and isFn are borrowed from underscorejs by way of CoffeeScript</p> </td> <td class="code"> <div class="highlight"><pre><span class="nv">isString = </span><span class="nf">(x) -&gt;</span> <span class="o">!!</span><span class="p">(</span><span class="nx">x</span> <span class="o">is</span> <span class="s1">&#39;&#39;</span> <span class="o">or</span> <span class="p">(</span><span class="nx">x</span> <span class="o">and</span> <span class="nx">x</span><span class="p">.</span><span class="nx">charCodeAt</span> <span class="o">and</span> <span class="nx">x</span><span class="p">.</span><span class="nx">substr</span><span class="p">))</span>
<span class="nv">isFn = </span><span class="nf">(x) -&gt;</span> <span class="o">!!</span><span class="p">(</span><span class="nx">x</span> <span class="o">and</span> <span class="nx">x</span><span class="p">.</span><span class="nx">constructor</span> <span class="o">and</span> <span class="nx">x</span><span class="p">.</span><span class="nx">call</span> <span class="o">and</span> <span class="nx">x</span><span class="p">.</span><span class="nx">apply</span><span class="p">)</span> </pre></div> </td> </tr> <tr id="section-6"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-6">&#182;</a> </div> <p>Extend object <code>x</code> with the properties of all objects in <code>more</code></p> </td> <td class="code"> <div class="highlight"><pre><span class="nv">extend = </span><span class="nf">(x, more...) -&gt;</span> <span class="p">(</span><span class="nx">x</span><span class="p">[</span><span class="nx">k</span><span class="p">]</span> <span class="o">=</span> <span class="nx">v</span> <span class="k">for</span> <span class="nx">k</span><span class="p">,</span><span class="nx">v</span> <span class="k">of</span> <span class="nx">o</span><span class="p">)</span> <span class="k">for</span> <span class="nx">o</span> <span class="k">in</span> <span class="nx">more</span><span class="p">;</span> <span class="nx">x</span></pre></div> </td> </tr> <tr id="section-7"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-7">&#182;</a> </div> <h2>class Scope</h2>
<span class="nv">isFn = </span><span class="nf">(x) -&gt;</span> <span class="o">!!</span><span class="p">(</span><span class="nx">x</span> <span class="o">and</span> <span class="nx">x</span><span class="p">.</span><span class="nx">constructor</span> <span class="o">and</span> <span class="nx">x</span><span class="p">.</span><span class="nx">call</span> <span class="o">and</span> <span class="nx">x</span><span class="p">.</span><span class="nx">apply</span><span class="p">)</span> </pre></div> </td> </tr> <tr id="section-6"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-6">&#182;</a> </div> <p>Extend object <code>x</code> with the properties of all objects in <code>more</code></p> </td> <td class="code"> <div class="highlight"><pre><span class="nv">extend = </span><span class="nf">(x, more...) -&gt;</span> <span class="p">(</span><span class="nx">x</span><span class="p">[</span><span class="nx">k</span><span class="p">]</span> <span class="o">=</span> <span class="nx">v</span> <span class="k">for</span> <span class="nx">k</span><span class="p">,</span><span class="nx">v</span> <span class="k">of</span> <span class="nx">o</span><span class="p">)</span> <span class="k">for</span> <span class="nx">o</span> <span class="k">in</span> <span class="nx">more</span><span class="p">;</span> <span class="nx">x</span></pre></div> </td> </tr> <tr id="section-7"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-7">&#182;</a> </div> <p>CoffeeScript runtime helpers</p> </td> <td class="code"> <div class="highlight"><pre><span class="nv">exports.COFFEESCRIPT_HELPERS = COFFEESCRIPT_HELPERS =</span>
<span class="nv">__slice: </span><span class="nb">Array</span><span class="o">::</span><span class="nx">slice</span>
<span class="nv">__bind: </span><span class="nf">(fn, me) -&gt;</span> <span class="o">-&gt;</span> <span class="nx">fn</span><span class="p">.</span><span class="nx">apply</span> <span class="nx">me</span><span class="p">,</span> <span class="nx">arguments</span>
<span class="nv">__indexOf: </span><span class="nb">Array</span><span class="o">::</span><span class="nx">indexOf</span> <span class="o">or</span> <span class="nf">(item) -&gt;</span>
<span class="k">return</span> <span class="nx">i</span> <span class="k">if</span> <span class="nx">x</span> <span class="o">is</span> <span class="nx">item</span> <span class="k">for</span> <span class="nx">x</span><span class="p">,</span> <span class="nx">i</span> <span class="k">in</span> <span class="err">@</span>
<span class="nv">__hasProp: </span><span class="nb">Object</span><span class="o">::</span><span class="nx">hasOwnProperty</span>
<span class="nv">__extends: </span><span class="nf">(child, parent) -&gt;</span>
<span class="k">for</span> <span class="nx">key</span> <span class="k">of</span> <span class="nx">parent</span>
<span class="nx">child</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">=</span> <span class="nx">parent</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="k">if</span> <span class="nb">eval</span><span class="p">(</span><span class="s1">&#39;__hasProp&#39;</span><span class="p">).</span><span class="nx">call</span> <span class="nx">parent</span><span class="p">,</span> <span class="nx">key</span>
<span class="nv">ctor = </span><span class="o">-&gt;</span> <span class="vi">@constructor = </span><span class="nx">child</span>
<span class="nv">ctor:: = </span><span class="nx">parent</span><span class="p">.</span><span class="nx">prototype</span>
<span class="nv">child.prototype = </span><span class="k">new</span> <span class="nx">ctor</span>
<span class="nv">child.__super__ = parent::</span>
<span class="nx">child</span></pre></div> </td> </tr> <tr id="section-8"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-8">&#182;</a> </div> <h2>class Scope</h2>
<p>This class represents a lexical scope.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nv">exports.Scope = </span><span class="k">class</span> <span class="nx">Scope</span>
</pre></div> </td> </tr> <tr id="section-8"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-8">&#182;</a> </div> <p>The 'scoped eval' literal.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">EVAL_LITERAL = </span><span class="s2">&quot;(function(__expr){return eval(__expr)})&quot;</span>
<span class="nv">literal: </span><span class="o">-&gt;</span> <span class="nx">EVAL_LITERAL</span></pre></div> </td> </tr> <tr id="section-9"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-9">&#182;</a> </div> <h3>Class methods</h3> </td> <td class="code"> <div class="highlight"><pre> </pre></div> </td> </tr> <tr id="section-10"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-10">&#182;</a> </div> <h4>Scope.eval(expr)</h4>
</pre></div> </td> </tr> <tr id="section-9"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-9">&#182;</a> </div> <p>The 'scoped eval' literal.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">EVAL_LITERAL = </span><span class="s2">&quot;(function(__expr){return eval(__expr)})&quot;</span>
</pre></div> </td> </tr> <tr id="section-10"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-10">&#182;</a> </div> <h3>Class methods</h3> </td> <td class="code"> <div class="highlight"><pre> </pre></div> </td> </tr> <tr id="section-11"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-11">&#182;</a> </div> <h4>Scope.eval(expr)</h4>

@@ -28,36 +41,46 @@ <p>A function to eval a given expression safely wrapped in a function

<p><code>Scope.eval</code> provides the outer scope for all scoped evals.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="vi">@eval = </span><span class="o">`</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nb">eval</span><span class="p">)(</span><span class="nx">EVAL_LITERAL</span><span class="p">)</span><span class="o">`</span></pre></div> </td> </tr> <tr id="section-11"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-11">&#182;</a> </div> <h4>Scope.literalize(x)</h4>
<p><code>Scope.eval</code> provides the outer scope for all scoped evals.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="vi">@_eval = </span><span class="o">`</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nb">eval</span><span class="p">)(</span><span class="nx">EVAL_LITERAL</span><span class="p">)</span><span class="o">`</span>
</pre></div> </td> </tr> <tr id="section-12"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-12">&#182;</a> </div> <h4>Scope::eval(context, expr)</h4>
<p>Return a literal expression for <code>x</code></p> </td> <td class="code"> <div class="highlight"><pre> <span class="vi">@literalize = </span><span class="nv">literalize = </span><span class="nf">(x) -&gt;</span></pre></div> </td> </tr> <tr id="section-12"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-12">&#182;</a> </div> <p>A string must already be an expression.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="k">if</span> <span class="nx">isString</span> <span class="nx">x</span> <span class="k">then</span> <span class="nx">x</span>
<span class="k">else</span> <span class="k">if</span> <span class="nx">isFn</span> <span class="nx">x</span> </pre></div> </td> </tr> <tr id="section-13"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-13">&#182;</a> </div> <p>'Decompile' a function using <code>Function::toString</code> (where supported)</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">x = </span><span class="nx">x</span><span class="p">.</span><span class="nx">toString</span><span class="p">()</span></pre></div> </td> </tr> <tr id="section-14"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-14">&#182;</a> </div> <p>Remove name from named function</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">x = </span><span class="nx">x</span><span class="p">.</span><span class="nx">replace</span> <span class="sr">/function[^\(]*\(/</span><span class="p">,</span> <span class="s2">&quot;function (&quot;</span>
<span class="s2">&quot;(#{x})&quot;</span></pre></div> </td> </tr> <tr id="section-15"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-15">&#182;</a> </div> <p>Otherwise, <code>x</code> must literalize itself.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="k">else</span> <span class="nx">x</span><span class="p">.</span><span class="nx">literal</span><span class="p">()</span></pre></div> </td> </tr> <tr id="section-16"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-16">&#182;</a> </div> <h4>Class properties intended to be overridden.</h4> </td> <td class="code"> <div class="highlight"><pre> </pre></div> </td> </tr> <tr id="section-17"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-17">&#182;</a> </div> <p>These locals are defined in the root scope.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="vi">@rootLocals =</span></pre></div> </td> </tr> <tr id="section-18"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-18">&#182;</a> </div> <p>CoffeeScript runtime helpers</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">__slice: </span><span class="nb">Array</span><span class="o">::</span><span class="nx">slice</span>
<span class="nv">__bind: </span><span class="nf">(fn, me) -&gt;</span> <span class="o">-&gt;</span> <span class="nx">fn</span><span class="p">.</span><span class="nx">apply</span> <span class="nx">me</span><span class="p">,</span> <span class="nx">arguments</span>
<span class="nv">__indexOf: </span><span class="nb">Array</span><span class="o">::</span><span class="nx">indexOf</span> <span class="o">or</span> <span class="nf">(item) -&gt;</span>
<span class="k">return</span> <span class="nx">i</span> <span class="k">if</span> <span class="nx">x</span> <span class="o">is</span> <span class="nx">item</span> <span class="k">for</span> <span class="nx">x</span><span class="p">,</span> <span class="nx">i</span> <span class="k">in</span> <span class="err">@</span>
<span class="nv">__hasProp: </span><span class="nb">Object</span><span class="o">::</span><span class="nx">hasOwnProperty</span>
<span class="nv">__extends: </span><span class="nf">(child, parent) -&gt;</span>
<span class="k">for</span> <span class="nx">key</span> <span class="k">of</span> <span class="nx">parent</span>
<span class="nx">child</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">=</span> <span class="nx">parent</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="k">if</span> <span class="nb">eval</span><span class="p">(</span><span class="s1">&#39;__hasProp&#39;</span><span class="p">).</span><span class="nx">call</span> <span class="nx">parent</span><span class="p">,</span> <span class="nx">key</span>
<span class="nv">ctor = </span><span class="o">-&gt;</span> <span class="vi">@constructor = </span><span class="nx">child</span>
<span class="nv">ctor:: = </span><span class="nx">parent</span><span class="p">.</span><span class="nx">prototype</span>
<span class="nv">child.prototype = </span><span class="k">new</span> <span class="nx">ctor</span>
<span class="nv">child.__super__ = parent::</span>
<span class="nx">child</span>
</pre></div> </td> </tr> <tr id="section-19"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-19">&#182;</a> </div> <p>List of reserved variable names.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="vi">@reserved = </span><span class="p">[</span><span class="s1">&#39;__expr&#39;</span><span class="p">]</span>
</pre></div> </td> </tr> <tr id="section-20"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-20">&#182;</a> </div> <p>Create a getters / setters for the given name.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="vi">@makeGetter = </span><span class="nf">(name) -&gt;</span> <span class="o">-&gt;</span> <span class="nx">@get</span> <span class="nx">name</span>
<p>Evaluate an expression in this scope.</p>
<p>The optional <code>context</code> parameter serves as the value of <code>this</code>
for the eval of <code>expr</code>.</p>
<p><code>context.locals</code> may define additional locals visible only to <code>expr</code>.</p>
<h5>Argument Decompilation</h5>
<p>The <code>expr</code> argument need not be a string: it can also be a function or
an object that defines a <code>literalize</code> method. See <code>Scope.literalize</code>.
This means that you can recompile a function in another scope like this:</p>
<pre><code>var getXFromScope = scope.eval(function(){return x});
log(getXFromScope()); // Prints the current value of x in the scope.
</code></pre> </td> <td class="code"> <div class="highlight"><pre> <span class="vi">@eval = </span><span class="nf">(context, expr, literalize_ = literalize) -&gt;</span> </pre></div> </td> </tr> <tr id="section-13"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-13">&#182;</a> </div> <p>Normalize arguments</p> </td> <td class="code"> <div class="highlight"><pre> <span class="p">[</span><span class="nx">context</span><span class="p">,</span> <span class="nx">expr</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="kc">null</span><span class="p">,</span> <span class="nx">context</span><span class="p">]</span> <span class="nx">unless</span> <span class="nx">expr</span><span class="o">?</span></pre></div> </td> </tr> <tr id="section-14"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-14">&#182;</a> </div> <p>Code to declare and set locals</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">locals = </span><span class="nx">context</span><span class="o">?</span><span class="p">.</span><span class="nx">locals</span> <span class="o">and</span> <span class="p">(</span><span class="k">for</span> <span class="nx">name</span> <span class="k">of</span> <span class="nx">context</span><span class="p">.</span><span class="nx">locals</span>
<span class="s2">&quot;var #{name} = this.locals.#{name};\n&quot;</span><span class="p">).</span><span class="nx">join</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="o">or</span> <span class="s2">&quot;&quot;</span></pre></div> </td> </tr> <tr id="section-15"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-15">&#182;</a> </div> <p>Code to declare and set literals</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">literals = </span><span class="nx">context</span><span class="o">?</span><span class="p">.</span><span class="nx">literals</span> <span class="o">and</span> <span class="p">(</span><span class="k">for</span> <span class="nx">name</span><span class="p">,</span> <span class="nx">val</span> <span class="k">of</span> <span class="nx">context</span><span class="p">.</span><span class="nx">literals</span>
<span class="s2">&quot;var #{name} = #{literalize val};\n&quot;</span><span class="p">).</span><span class="nx">join</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="o">or</span> <span class="s2">&quot;&quot;</span></pre></div> </td> </tr> <tr id="section-16"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-16">&#182;</a> </div> <p>eval expr in the context of locals and literals</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nx">@_eval</span><span class="p">.</span><span class="nx">call</span> <span class="nx">context</span><span class="p">,</span> <span class="nx">locals</span> <span class="o">+</span> <span class="nx">literals</span> <span class="o">+</span> <span class="nx">literalize_</span> <span class="nx">expr</span>
</pre></div> </td> </tr> <tr id="section-17"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-17">&#182;</a> </div> <h4>Scope::run(ctx, fn)</h4>
<p>'Run' a function in this scope. i.e., <code>literalize</code>, <code>eval</code> and <code>call</code>
the given function within this scope.</p>
<pre><code>log(scope.run(function(){return x})); // Prints the current value of x in the scope.
</code></pre> </td> <td class="code"> <div class="highlight"><pre> <span class="vi">@run = </span><span class="nf">(ctx, fn) -&gt;</span> <span class="nx">@eval</span> <span class="nx">ctx</span><span class="p">,</span> <span class="nx">fn</span><span class="p">,</span> <span class="nf">(fn) -&gt;</span> <span class="s2">&quot;#{literalize fn}.call(this)&quot;</span>
</pre></div> </td> </tr> <tr id="section-18"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-18">&#182;</a> </div> <h4>Scope.literalize(x)</h4>
<p>Return a literal expression for <code>x</code></p> </td> <td class="code"> <div class="highlight"><pre> <span class="vi">@literalize = </span><span class="nv">literalize = </span><span class="nf">(x) -&gt;</span></pre></div> </td> </tr> <tr id="section-19"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-19">&#182;</a> </div> <p>A string must already be an expression.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="k">if</span> <span class="nx">isString</span> <span class="nx">x</span> <span class="k">then</span> <span class="nx">x</span>
<span class="k">else</span> <span class="k">if</span> <span class="nx">isFn</span> <span class="nx">x</span> </pre></div> </td> </tr> <tr id="section-20"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-20">&#182;</a> </div> <p>'Decompile' a function using <code>Function::toString</code> (where supported)</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">x = </span><span class="nx">x</span><span class="p">.</span><span class="nx">toString</span><span class="p">()</span></pre></div> </td> </tr> <tr id="section-21"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-21">&#182;</a> </div> <p>Remove name from named function</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">x = </span><span class="nx">x</span><span class="p">.</span><span class="nx">replace</span> <span class="sr">/function[^\(]*\(/</span><span class="p">,</span> <span class="s2">&quot;function (&quot;</span>
<span class="s2">&quot;(#{x})&quot;</span></pre></div> </td> </tr> <tr id="section-22"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-22">&#182;</a> </div> <p>Otherwise, <code>x</code> must literalize itself.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="k">else</span> <span class="nx">x</span><span class="p">.</span><span class="nx">literal</span><span class="p">()</span></pre></div> </td> </tr> <tr id="section-23"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-23">&#182;</a> </div> <h4>Class properties intended to be overridden.</h4> </td> <td class="code"> <div class="highlight"><pre> </pre></div> </td> </tr> <tr id="section-24"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-24">&#182;</a> </div> <p>List of reserved variable names.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="vi">@reserved = </span><span class="p">[</span><span class="s1">&#39;__expr&#39;</span><span class="p">]</span>
</pre></div> </td> </tr> <tr id="section-25"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-25">&#182;</a> </div> <p>Create a getters / setters for the given name.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="vi">@makeGetter = </span><span class="nf">(name) -&gt;</span> <span class="o">-&gt;</span> <span class="nx">@get</span> <span class="nx">name</span>
<span class="vi">@makeSetter = </span><span class="nf">(name) -&gt;</span> <span class="nf">(val) -&gt;</span> <span class="nx">@set</span> <span class="nx">name</span><span class="p">,</span> <span class="nx">val</span><span class="p">,</span> <span class="kc">false</span>
</pre></div> </td> </tr> <tr id="section-21"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-21">&#182;</a> </div> <h4>Class initializer</h4>
<span class="vi">@root = </span><span class="k">new</span> <span class="err">@</span> <span class="p">{</span><span class="nv">locals: </span><span class="nx">COFFEESCRIPT_HELPERS</span><span class="p">}</span>
</pre></div> </td> </tr> <tr id="section-26"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-26">&#182;</a> </div> <h4>Scope.create(options)</h4>
<p>Call this function at the end of your Scope subclass to
create global and root scopes for your class.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="vi">@initialize = </span><span class="o">-&gt;</span>
</pre></div> </td> </tr> <tr id="section-22"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-22">&#182;</a> </div> <p>Create a global scope for this class</p> </td> <td class="code"> <div class="highlight"><pre> <span class="vi">@global = </span><span class="k">new</span> <span class="err">@</span><span class="p">()</span>
</pre></div> </td> </tr> <tr id="section-23"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-23">&#182;</a> </div> <p>Create a root scope for this class.
All scopes may extend this scope.
It contains the rootLocals.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="vi">@root = </span><span class="nx">@global</span><span class="p">.</span><span class="nx">extend</span> <span class="nv">locals: </span><span class="nx">@rootLocals</span>
</pre></div> </td> </tr> <tr id="section-24"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-24">&#182;</a> </div> <h4>Scope.create(options)</h4>
<p>Returns a scope that extends the root scope
of this class. </p>
<p>See <code>constructor</code> for description of options.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="vi">@create = </span><span class="nf">(options) -&gt;</span> <span class="nx">@root</span><span class="p">.</span><span class="nx">extend</span> <span class="nx">options</span></pre></div> </td> </tr> <tr id="section-25"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-25">&#182;</a> </div> <h4>constructor(options)</h4>
<p>See <code>constructor</code> for description of options.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="vi">@create = </span><span class="nf">(options = {}) -&gt;</span> <span class="nx">@root</span><span class="p">.</span><span class="nx">extend</span> <span class="nx">options</span>
</pre></div> </td> </tr> <tr id="section-27"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-27">&#182;</a> </div> <h4>constructor(options)</h4>

@@ -97,10 +120,10 @@ <p>Called with no arguments: creates a global scope.</p>

log(scope.eval('foo')); // 3
</code></pre> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">constructor: </span><span class="nf">(@options = {}) -&gt;</span></pre></div> </td> </tr> <tr id="section-26"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-26">&#182;</a> </div> <p>The types of variables in options.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">varTypes = </span><span class="p">[</span><span class="s1">&#39;locals&#39;</span><span class="p">,</span> <span class="s1">&#39;literals&#39;</span><span class="p">]</span></pre></div> </td> </tr> <tr id="section-27"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-27">&#182;</a> </div> <p>Normalize options.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nx">@options</span><span class="p">[</span><span class="nx">k</span><span class="p">]</span> <span class="o">?=</span> <span class="p">{}</span> <span class="k">for</span> <span class="nx">k</span> <span class="k">in</span> <span class="nx">varTypes</span></pre></div> </td> </tr> <tr id="section-28"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-28">&#182;</a> </div> <h5>The <code>__this</code> local variable</h5>
</code></pre> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">constructor: </span><span class="nf">(@options = {}) -&gt;</span></pre></div> </td> </tr> <tr id="section-28"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-28">&#182;</a> </div> <p>The types of variables in options.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">varTypes = </span><span class="p">[</span><span class="s1">&#39;locals&#39;</span><span class="p">,</span> <span class="s1">&#39;literals&#39;</span><span class="p">]</span></pre></div> </td> </tr> <tr id="section-29"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-29">&#182;</a> </div> <p>Normalize options.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nx">@options</span><span class="p">[</span><span class="nx">k</span><span class="p">]</span> <span class="o">?=</span> <span class="p">{}</span> <span class="k">for</span> <span class="nx">k</span> <span class="k">in</span> <span class="nx">varTypes</span></pre></div> </td> </tr> <tr id="section-30"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-30">&#182;</a> </div> <h5>The <code>__this</code> local variable</h5>
<p>Within the target scope, <code>__this</code> refers to the Scope object for that
target scope.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="vi">@options.locals.__this = </span><span class="err">@</span>
<span class="p">{</span><span class="nx">@parent</span><span class="p">}</span> <span class="o">=</span> <span class="nx">@options</span></pre></div> </td> </tr> <tr id="section-29"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-29">&#182;</a> </div> <p>Register variable names declared in options.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">names = </span><span class="p">[]</span>
<span class="p">{</span><span class="nx">@parent</span><span class="p">}</span> <span class="o">=</span> <span class="nx">@options</span></pre></div> </td> </tr> <tr id="section-31"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-31">&#182;</a> </div> <p>Register variable names declared in options.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">names = </span><span class="p">[]</span>
<span class="nx">names</span><span class="p">.</span><span class="nx">push</span> <span class="nx">name</span> <span class="k">for</span> <span class="nx">name</span> <span class="k">of</span> <span class="nx">@options</span><span class="p">[</span><span class="nx">k</span><span class="p">]</span> <span class="k">for</span> <span class="nx">k</span> <span class="k">in</span> <span class="nx">varTypes</span>
<span class="k">throw</span> <span class="s1">&#39;Reserved&#39;</span> <span class="k">for</span> <span class="nx">n</span> <span class="k">in</span> <span class="nx">names</span> <span class="k">when</span> <span class="nx">n</span> <span class="k">in</span> <span class="nx">@constructor</span><span class="p">.</span><span class="nx">reserved</span>
<span class="vi">@names = </span><span class="nx">names</span><span class="p">.</span><span class="nx">concat</span> <span class="nx">@parent</span><span class="o">?</span><span class="p">.</span><span class="nx">names</span> <span class="o">or</span> <span class="p">[]</span></pre></div> </td> </tr> <tr id="section-30"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-30">&#182;</a> </div> <p>Compile the 'scoped eval'</p> </td> <td class="code"> <div class="highlight"><pre> <span class="vi">@_eval = </span><span class="nx">@parent</span><span class="o">?</span><span class="p">.</span><span class="nb">eval</span><span class="p">(</span><span class="nx">@options</span><span class="p">,</span> <span class="err">@</span><span class="p">)</span> <span class="o">or</span> <span class="nx">Scope</span><span class="p">.</span><span class="nb">eval</span> </pre></div> </td> </tr> <tr id="section-31"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-31">&#182;</a> </div> <h5>Exports</h5>
<span class="vi">@names = </span><span class="nx">names</span><span class="p">.</span><span class="nx">concat</span> <span class="nx">@parent</span><span class="o">?</span><span class="p">.</span><span class="nx">names</span> <span class="o">or</span> <span class="p">[]</span></pre></div> </td> </tr> <tr id="section-32"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-32">&#182;</a> </div> <p>Compile the 'scoped eval'</p> </td> <td class="code"> <div class="highlight"><pre> <span class="vi">@_eval = </span><span class="p">(</span><span class="nx">@parent</span> <span class="o">or</span> <span class="nx">Scope</span><span class="p">).</span><span class="nb">eval</span> <span class="nx">@options</span><span class="p">,</span> <span class="nx">EVAL_LITERAL</span></pre></div> </td> </tr> <tr id="section-33"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-33">&#182;</a> </div> <h5>Exports</h5>

@@ -128,45 +151,9 @@ <p>Exports allow direct access to locals inside the scope via

<span class="nx">@__defineSetter__</span> <span class="nx">x</span><span class="p">,</span> <span class="nx">C</span><span class="p">.</span><span class="nx">makeSetter</span> <span class="nx">x</span>
<span class="k">else</span> </pre></div> </td> </tr> <tr id="section-32"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-32">&#182;</a> </div> <p>In environments where <code>__defineGetter__</code> and <code>__defineSetter__</code>
are not supported, <code>@[name]</code> is set once when the scope is created.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="err">@</span><span class="p">[</span><span class="nx">x</span><span class="p">]</span> <span class="o">=</span> <span class="nx">C</span><span class="p">.</span><span class="nx">makeGetter</span><span class="p">(</span><span class="nx">x</span><span class="p">)()</span> <span class="k">for</span> <span class="nx">x</span> <span class="k">in</span> <span class="nx">exports</span>
<span class="k">else</span> </pre></div> </td> </tr> <tr id="section-34"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-34">&#182;</a> </div> <p>In environments where <code>__defineGetter__</code> and <code>__defineSetter__</code>
are not supported, <code>@[name]</code> is set once when the scope is created.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="err">@</span><span class="p">[</span><span class="nx">x</span><span class="p">]</span> <span class="o">=</span> <span class="nx">C</span><span class="p">.</span><span class="nx">makeGetter</span><span class="p">(</span><span class="nx">x</span><span class="p">).</span><span class="nx">call</span> <span class="err">@</span> <span class="k">for</span> <span class="nx">x</span> <span class="k">in</span> <span class="nx">exports</span>
</pre></div> </td> </tr> <tr id="section-33"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-33">&#182;</a> </div> <p>The current value of <code>this</code> inside the eval.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">context: </span><span class="kc">null</span>
</pre></div> </td> </tr> <tr id="section-34"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-34">&#182;</a> </div> <h4>Scope::eval(context, expr)</h4>
</pre></div> </td> </tr> <tr id="section-35"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-35">&#182;</a> </div> <p>See Scope.eval</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nb">eval</span><span class="o">:</span> <span class="nx">@eval</span>
</pre></div> </td> </tr> <tr id="section-36"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-36">&#182;</a> </div> <p>See Scope.run</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">run: </span><span class="nx">@run</span>
</pre></div> </td> </tr> <tr id="section-37"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-37">&#182;</a> </div> <p>Call <code>f</code> with this scope as the context.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">self: </span><span class="nf">(f) -&gt;</span> <span class="nx">f</span><span class="p">.</span><span class="nx">call</span> <span class="err">@</span></pre></div> </td> </tr> <tr id="section-38"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-38">&#182;</a> </div> <h4>Scope::set(name, val, isLiteral)</h4>
<p>Evaluate an expression in this scope.</p>
<p>The optional <code>context</code> parameter serves as the value of <code>this</code>
for the eval of <code>expr</code>.</p>
<p><code>context.locals</code> may define additional locals visible only to <code>expr</code>.</p>
<h5>Argument Decompilation</h5>
<p>The <code>expr</code> argument need not be a string: it can also be a function or
an object that defines a <code>literalize</code> method. See <code>Scope.literalize</code>.
This means that you can recompile a function in another scope like this:</p>
<pre><code>var getXFromScope = scope.eval(function(){return x});
log(getXFromScope()); // Prints the current value of x in the scope.
</code></pre> </td> <td class="code"> <div class="highlight"><pre> <span class="nb">eval</span><span class="o">:</span> <span class="nf">(@context, expr) -&gt;</span>
<span class="p">[</span><span class="nx">@context</span><span class="p">,</span> <span class="nx">expr</span><span class="p">]</span> <span class="o">=</span> <span class="p">[{},</span> <span class="nx">@context</span><span class="p">]</span> <span class="nx">unless</span> <span class="nx">expr</span>
<span class="nv">locals = </span>
<span class="k">if</span> <span class="nx">@context</span><span class="p">.</span><span class="nx">locals</span> <span class="k">then</span> <span class="p">(</span><span class="k">for</span> <span class="nx">name</span> <span class="k">of</span> <span class="nx">@context</span><span class="p">.</span><span class="nx">locals</span>
<span class="s2">&quot;var #{name} = this.locals.#{name};\n&quot;</span><span class="p">).</span><span class="nx">join</span> <span class="s1">&#39;&#39;</span>
<span class="k">else</span> <span class="s2">&quot;&quot;</span>
<span class="nv">literals = </span>
<span class="k">if</span> <span class="nx">@context</span><span class="p">.</span><span class="nx">literals</span> <span class="k">then</span> <span class="p">(</span><span class="k">for</span> <span class="nx">name</span><span class="p">,</span> <span class="nx">val</span> <span class="k">of</span> <span class="nx">@context</span><span class="p">.</span><span class="nx">literals</span>
<span class="s2">&quot;var #{name} = #{literalize val};\n&quot;</span><span class="p">).</span><span class="nx">join</span> <span class="s1">&#39;&#39;</span>
<span class="k">else</span> <span class="s2">&quot;&quot;</span>
<span class="nx">@_eval</span><span class="p">.</span><span class="nx">call</span> <span class="nx">@context</span><span class="p">,</span> <span class="nx">locals</span> <span class="o">+</span> <span class="nx">literals</span> <span class="o">+</span> <span class="nx">literalize</span> <span class="nx">expr</span>
</pre></div> </td> </tr> <tr id="section-35"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-35">&#182;</a> </div> <h4>Scope::run(ctx, fn)</h4>
<p>'Run' a function in this scope. i.e., <code>literalize</code>, <code>eval</code> and <code>call</code>
the given function within this scope.</p>
<pre><code>log(scope.run(function(){return x})); // Prints the current value of x in the scope.
</code></pre> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">run: </span><span class="nf">(ctx, fn) -&gt;</span>
<span class="p">[</span><span class="nx">ctx</span><span class="p">,</span> <span class="nx">fn</span><span class="p">]</span> <span class="o">=</span> <span class="p">[{},</span> <span class="nx">ctx</span><span class="p">]</span> <span class="nx">unless</span> <span class="nx">fn</span>
<span class="nx">@eval</span> <span class="nx">ctx</span><span class="p">,</span> <span class="s2">&quot;#{literalize fn}.call(this)&quot;</span></pre></div> </td> </tr> <tr id="section-36"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-36">&#182;</a> </div> <h4>Scope::set(name, val, isLiteral)</h4>
<p>Set local variable to value.

@@ -181,11 +168,11 @@ <code>if isLiteral then literalize val</code>.</p>

<span class="nx">@set</span> <span class="nx">name</span><span class="p">,</span> <span class="nx">val</span><span class="p">,</span> <span class="nx">isLiteral</span> <span class="k">for</span> <span class="nx">name</span><span class="p">,</span> <span class="nx">val</span> <span class="k">in</span> <span class="nx">obj</span>
</pre></div> </td> </tr> <tr id="section-37"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-37">&#182;</a> </div> <h4>Scope::get(name)</h4>
</pre></div> </td> </tr> <tr id="section-39"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-39">&#182;</a> </div> <h4>Scope::get(name)</h4>
<p>Get a local value from this scope.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">get: </span><span class="nf">(name) -&gt;</span> <span class="nx">@_eval</span> <span class="nx">name</span></pre></div> </td> </tr> <tr id="section-38"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-38">&#182;</a> </div> <h4>Scope::extend(options)</h4>
<p>Get a local value from this scope.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">get: </span><span class="nf">(name) -&gt;</span> <span class="nx">@_eval</span> <span class="nx">name</span></pre></div> </td> </tr> <tr id="section-40"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-40">&#182;</a> </div> <h4>Scope::extend(options)</h4>
<p>Create a new scope that extends this one, with the given options.
See <code>constructor</code> for a list of options.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">extend: </span><span class="nf">(options = {}) -&gt;</span> <span class="k">new</span> <span class="nx">@constructor</span> <span class="nx">extend</span> <span class="nx">options</span><span class="p">,</span> <span class="nv">parent: </span><span class="err">@</span>
</pre></div> </td> </tr> <tr id="section-39"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-39">&#182;</a> </div> <p>Initialize this class</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nx">@initialize</span><span class="p">()</span>
See <code>constructor</code> for a list of options.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">extend: </span><span class="nf">(options = {}) -&gt;</span>
<span class="k">new</span> <span class="p">(</span><span class="nx">options</span><span class="p">.</span><span class="k">class</span> <span class="o">or</span> <span class="nx">@constructor</span><span class="p">)</span> <span class="nx">extend</span> <span class="nx">options</span><span class="p">,</span> <span class="nv">parent: </span><span class="err">@</span>
</pre></div> </td> </tr> </tbody> </table> </div> </body> </html>

@@ -6,3 +6,3 @@ # ScopeJS

Latest version: [0.10.0](http://github.com/dbrans/scope)
Latest version: [0.10.1](http://github.com/dbrans/scope)

@@ -9,0 +9,0 @@ ## Table of Contents

@@ -12,4 +12,2 @@ <!DOCTYPE html>

<p><em>Pimp your Lexical Scopes.</em></p>
<p>A JavaScript library for defining and working with lexical scopes.</p>

@@ -19,2 +17,4 @@

<p>Latest version: <a href="http://github.com/dbrans/scope">0.10.1</a></p>
<h2>Table of Contents</h2>

@@ -21,0 +21,0 @@

(function() {
/*
* Scopejs v0.9.0
* Scopejs v0.10.1
* http://scopejs.org

@@ -104,5 +104,2 @@ *

})()).join('') || "";
if (typeof this.set === "function") {
this.set('__context', context);
}
return this._eval.call(context, locals + literals + literalize_(expr));

@@ -158,5 +155,2 @@ };

this.parent = this.options.parent;
if (!this.parent) {
this.options.locals.__context = null;
}
names = [];

@@ -205,3 +199,3 @@ for (_j = 0, _len2 = varTypes.length; _j < _len2; _j++) {

x = exports[_n];
this[x] = C.makeGetter(x)();
this[x] = C.makeGetter(x).call(this);
}

@@ -212,2 +206,5 @@ }

Scope.prototype.run = Scope.run;
Scope.prototype.self = function(f) {
return f.call(this);
};
Scope.prototype.set = function(name, val, isLiteral) {

@@ -214,0 +211,0 @@ var obj, _len, _ref, _results;

@@ -6,3 +6,3 @@ {

"author": "Derek Brans <dbrans@gmail.com>",
"version": "0.10.0",
"version": "0.10.1",
"homepage": "http://scopejs.org",

@@ -9,0 +9,0 @@ "bugs": { "web" : "github.com/dbrans/scope/issues"},

# File header.
###
* Scopejs v0.10.0
* Scopejs v0.10.1
* http://scopejs.org

@@ -47,3 +47,3 @@ *

# #### Scope.eval(expr)
# #### Scope._eval(expr)
# A function to eval a given expression safely wrapped in a function

@@ -87,4 +87,2 @@ # in the global scope.

"var #{name} = #{literalize val};\n").join('') or ""
# Set the value of `this` for this scope for this invocation.
@set? '__context', context
# eval expr in the context of locals and literals

@@ -174,5 +172,2 @@ @_eval.call context, locals + literals + literalize_ expr

{@parent} = @options
# The last value of `this` when Scope::eval was called with a context.
# Root scopes only.
@options.locals.__context = null if not @parent
# Register variable names declared in options.

@@ -210,8 +205,13 @@ names = []

# are not supported, `@[name]` is set once when the scope is created.
@[x] = C.makeGetter(x)() for x in exports
@[x] = C.makeGetter(x).call @ for x in exports
# See Scope.eval
eval: @eval
# See Scope.run
run: @run
# Call `f` with this scope as the context.
self: (f) -> f.call @

@@ -218,0 +218,0 @@ # #### Scope::set(name, val, isLiteral)