2014-01-29 23:54:00 -05:00
|
|
|
|
<!DOCTYPE html>
|
|
|
|
|
|
|
|
|
|
<html>
|
|
|
|
|
<head>
|
|
|
|
|
<title>register.coffee</title>
|
|
|
|
|
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
|
|
|
|
<meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">
|
|
|
|
|
<link rel="stylesheet" media="all" href="docco.css" />
|
|
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
<div id="container">
|
|
|
|
|
<div id="background"></div>
|
|
|
|
|
|
|
|
|
|
<ul id="jump_to">
|
|
|
|
|
<li>
|
|
|
|
|
<a class="large" href="javascript:void(0);">Jump To …</a>
|
|
|
|
|
<a class="small" href="javascript:void(0);">+</a>
|
|
|
|
|
<div id="jump_wrapper">
|
2014-08-26 12:24:29 -04:00
|
|
|
|
<div id="jump_page_wrapper">
|
|
|
|
|
<div id="jump_page">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a class="source" href="browser.html">
|
|
|
|
|
browser.coffee
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a class="source" href="cake.html">
|
|
|
|
|
cake.coffee
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a class="source" href="coffee-script.html">
|
|
|
|
|
coffee-script.coffee
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a class="source" href="command.html">
|
|
|
|
|
command.coffee
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a class="source" href="grammar.html">
|
|
|
|
|
grammar.coffee
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a class="source" href="helpers.html">
|
|
|
|
|
helpers.coffee
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a class="source" href="index.html">
|
|
|
|
|
index.coffee
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a class="source" href="lexer.html">
|
|
|
|
|
lexer.coffee
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a class="source" href="nodes.html">
|
|
|
|
|
nodes.coffee
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a class="source" href="optparse.html">
|
|
|
|
|
optparse.coffee
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a class="source" href="register.html">
|
|
|
|
|
register.coffee
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a class="source" href="repl.html">
|
|
|
|
|
repl.coffee
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a class="source" href="rewriter.html">
|
|
|
|
|
rewriter.coffee
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a class="source" href="scope.html">
|
|
|
|
|
scope.litcoffee
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a class="source" href="sourcemap.html">
|
|
|
|
|
sourcemap.litcoffee
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
</div>
|
2014-01-29 23:54:00 -05:00
|
|
|
|
</div>
|
|
|
|
|
</li>
|
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
<ul class="sections">
|
|
|
|
|
|
|
|
|
|
<li id="title">
|
|
|
|
|
<div class="annotation">
|
|
|
|
|
<h1>register.coffee</h1>
|
|
|
|
|
</div>
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li id="section-1">
|
|
|
|
|
<div class="annotation">
|
|
|
|
|
|
|
|
|
|
<div class="pilwrap ">
|
|
|
|
|
<a class="pilcrow" href="#section-1">¶</a>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="content"><div class='highlight'><pre>CoffeeScript = <span class="hljs-built_in">require</span> <span class="hljs-string">'./coffee-script'</span>
|
|
|
|
|
child_process = <span class="hljs-built_in">require</span> <span class="hljs-string">'child_process'</span>
|
|
|
|
|
helpers = <span class="hljs-built_in">require</span> <span class="hljs-string">'./helpers'</span>
|
|
|
|
|
path = <span class="hljs-built_in">require</span> <span class="hljs-string">'path'</span></pre></div></div>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li id="section-2">
|
|
|
|
|
<div class="annotation">
|
|
|
|
|
|
|
|
|
|
<div class="pilwrap ">
|
|
|
|
|
<a class="pilcrow" href="#section-2">¶</a>
|
|
|
|
|
</div>
|
|
|
|
|
<p>Load and run a CoffeeScript file for Node, stripping any <code>BOM</code>s.</p>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="content"><div class='highlight'><pre><span class="hljs-function"><span class="hljs-title">loadFile</span> = <span class="hljs-params">(<span class="hljs-built_in">module</span>, filename)</span> -></span>
|
2016-09-22 16:19:43 -04:00
|
|
|
|
answer = CoffeeScript._compileFile filename, <span class="hljs-literal">no</span>, <span class="hljs-literal">yes</span>
|
2014-01-29 23:54:00 -05:00
|
|
|
|
<span class="hljs-built_in">module</span>._compile answer, filename</pre></div></div>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li id="section-3">
|
|
|
|
|
<div class="annotation">
|
|
|
|
|
|
|
|
|
|
<div class="pilwrap ">
|
|
|
|
|
<a class="pilcrow" href="#section-3">¶</a>
|
|
|
|
|
</div>
|
|
|
|
|
<p>If the installed version of Node supports <code>require.extensions</code>, register
|
|
|
|
|
CoffeeScript as an extension.</p>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="content"><div class='highlight'><pre><span class="hljs-keyword">if</span> <span class="hljs-built_in">require</span>.extensions
|
|
|
|
|
<span class="hljs-keyword">for</span> ext <span class="hljs-keyword">in</span> CoffeeScript.FILE_EXTENSIONS
|
|
|
|
|
<span class="hljs-built_in">require</span>.extensions[ext] = loadFile</pre></div></div>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li id="section-4">
|
|
|
|
|
<div class="annotation">
|
|
|
|
|
|
|
|
|
|
<div class="pilwrap ">
|
|
|
|
|
<a class="pilcrow" href="#section-4">¶</a>
|
|
|
|
|
</div>
|
2014-08-23 10:08:39 -04:00
|
|
|
|
<p>Patch Node’s module loader to be able to handle multi-dot extensions.
|
|
|
|
|
This is a horrible thing that should not be required.</p>
|
2014-01-29 23:54:00 -05:00
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="content"><div class='highlight'><pre> Module = <span class="hljs-built_in">require</span> <span class="hljs-string">'module'</span>
|
2016-09-22 16:19:43 -04:00
|
|
|
|
<span class="hljs-function">
|
|
|
|
|
<span class="hljs-title">findExtension</span> = <span class="hljs-params">(filename)</span> -></span>
|
2014-01-29 23:54:00 -05:00
|
|
|
|
extensions = path.basename(filename).split <span class="hljs-string">'.'</span></pre></div></div>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li id="section-5">
|
|
|
|
|
<div class="annotation">
|
|
|
|
|
|
|
|
|
|
<div class="pilwrap ">
|
|
|
|
|
<a class="pilcrow" href="#section-5">¶</a>
|
|
|
|
|
</div>
|
|
|
|
|
<p>Remove the initial dot from dotfiles.</p>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="content"><div class='highlight'><pre> extensions.shift() <span class="hljs-keyword">if</span> extensions[<span class="hljs-number">0</span>] <span class="hljs-keyword">is</span> <span class="hljs-string">''</span></pre></div></div>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li id="section-6">
|
|
|
|
|
<div class="annotation">
|
|
|
|
|
|
|
|
|
|
<div class="pilwrap ">
|
|
|
|
|
<a class="pilcrow" href="#section-6">¶</a>
|
|
|
|
|
</div>
|
|
|
|
|
<p>Start with the longest possible extension and work our way shortwards.</p>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="content"><div class='highlight'><pre> <span class="hljs-keyword">while</span> extensions.shift()
|
|
|
|
|
curExtension = <span class="hljs-string">'.'</span> + extensions.join <span class="hljs-string">'.'</span>
|
|
|
|
|
<span class="hljs-keyword">return</span> curExtension <span class="hljs-keyword">if</span> Module._extensions[curExtension]
|
|
|
|
|
<span class="hljs-string">'.js'</span>
|
|
|
|
|
|
2016-09-22 16:19:43 -04:00
|
|
|
|
Module::load = <span class="hljs-function"><span class="hljs-params">(filename)</span> -></span>
|
|
|
|
|
@filename = filename
|
|
|
|
|
@paths = Module._nodeModulePaths path.dirname filename
|
2014-01-29 23:54:00 -05:00
|
|
|
|
extension = findExtension filename
|
|
|
|
|
Module._extensions[extension](<span class="hljs-keyword">this</span>, filename)
|
2016-09-22 16:19:43 -04:00
|
|
|
|
@loaded = <span class="hljs-literal">true</span></pre></div></div>
|
2014-01-29 23:54:00 -05:00
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li id="section-7">
|
|
|
|
|
<div class="annotation">
|
|
|
|
|
|
|
|
|
|
<div class="pilwrap ">
|
|
|
|
|
<a class="pilcrow" href="#section-7">¶</a>
|
|
|
|
|
</div>
|
2014-08-23 10:08:39 -04:00
|
|
|
|
<p>If we’re on Node, patch <code>child_process.fork</code> so that Coffee scripts are able
|
2014-01-29 23:54:00 -05:00
|
|
|
|
to fork both CoffeeScript files, and JavaScript files, directly.</p>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="content"><div class='highlight'><pre><span class="hljs-keyword">if</span> child_process
|
|
|
|
|
{fork} = child_process
|
|
|
|
|
binary = <span class="hljs-built_in">require</span>.resolve <span class="hljs-string">'../../bin/coffee'</span>
|
2016-09-22 16:19:43 -04:00
|
|
|
|
child_process.fork = <span class="hljs-function"><span class="hljs-params">(path, args, options)</span> -></span>
|
2014-01-29 23:54:00 -05:00
|
|
|
|
<span class="hljs-keyword">if</span> helpers.isCoffee path
|
|
|
|
|
<span class="hljs-keyword">unless</span> Array.isArray args
|
|
|
|
|
options = args <span class="hljs-keyword">or</span> {}
|
|
|
|
|
args = []
|
|
|
|
|
args = [path].concat args
|
|
|
|
|
path = binary
|
|
|
|
|
fork path, args, options</pre></div></div>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
|
|
|
</div>
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|