/
arcabouco.html
51 lines (43 loc) · 16.2 KB
/
arcabouco.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<!DOCTYPE html> <html> <head> <title>arcabouco.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> <div id="jump_to"> Jump To … <div id="jump_wrapper"> <div id="jump_page"> <a class="source" href="_monkey-fs.html"> _monkey-fs.coffee </a> <a class="source" href="_monkey-patching.html"> _monkey-patching.coffee </a> <a class="source" href="arcabouco.html"> arcabouco.coffee </a> <a class="source" href="arcabouco_content.html"> arcabouco_content.coffee </a> <a class="source" href="arcabouco_controller.html"> arcabouco_controller.coffee </a> <a class="source" href="arcabouco_object_pool.html"> arcabouco_object_pool.coffee </a> <a class="source" href="arcabouco_request.html"> arcabouco_request.coffee </a> <a class="source" href="arcabouco_template.html"> arcabouco_template.coffee </a> <a class="source" href="common.html"> common.coffee </a> <a class="source" href="old_arcabouco.html"> old_arcabouco.coffee </a> <a class="source" href="template.html"> template.coffee </a> </div> </div> </div> <table cellpadding="0" cellspacing="0"> <thead> <tr> <th class="docs"> <h1> arcabouco.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">¶</a> </div> <pre><code>Arcabouco.JS
(c) 2011 Patrick Negri, Yellers Software
Arcabouco.JS is freely distributable under the MIT license.
For all details and documentation:
http://github.com/pnegri/arcabouco-js
</code></pre> </td> <td class="code"> <div class="highlight"><pre></pre></div> </td> </tr> <tr id="section-2"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-2">¶</a> </div> <h2>Helpers & Setup</h2> </td> <td class="code"> <div class="highlight"><pre></pre></div> </td> </tr> <tr id="section-3"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-3">¶</a> </div> <p>Require our external dependencies, place all inside Common</p> </td> <td class="code"> <div class="highlight"><pre><span class="nv">Common = </span><span class="nx">require</span> <span class="nx">__dirname</span> <span class="o">+</span> <span class="s">'/common'</span></pre></div> </td> </tr> <tr id="section-4"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-4">¶</a> </div> <p>Patch node with some features</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">require</span> <span class="nx">__dirname</span> <span class="o">+</span> <span class="s">'/_monkey-patching'</span></pre></div> </td> </tr> <tr id="section-5"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-5">¶</a> </div> <p>Require default pieces of framework
TODO: Optmization Room - Only load these if no override is provided</p> </td> <td class="code"> <div class="highlight"><pre><span class="nv">ArcaboucoTemplate = </span><span class="nx">require</span> <span class="nx">__dirname</span> <span class="o">+</span> <span class="s">'/arcabouco_template'</span>
<span class="nv">ArcaboucoContent = </span><span class="nx">require</span> <span class="nx">__dirname</span> <span class="o">+</span> <span class="s">'/arcabouco_content'</span>
<span class="nv">ArcaboucoObjectPool = </span><span class="nx">require</span> <span class="nx">__dirname</span> <span class="o">+</span> <span class="s">'/arcabouco_object_pool'</span>
<span class="nv">ArcaboucoController = </span><span class="nx">require</span> <span class="nx">__dirname</span> <span class="o">+</span> <span class="s">'/arcabouco_controller'</span>
<span class="nv">ArcaboucoRequest = </span><span class="nx">require</span> <span class="nx">__dirname</span> <span class="o">+</span> <span class="s">'/arcabouco_request'</span>
<span class="k">class</span> <span class="nx">Arcabouco</span></pre></div> </td> </tr> <tr id="section-6"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-6">¶</a> </div> <p>Configuration</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">config : </span><span class="p">{}</span>
<span class="nv">Template : </span><span class="kc">null</span>
<span class="nv">Content : </span><span class="kc">null</span>
<span class="nv">ObjectPool : </span><span class="kc">null</span>
<span class="nv">Controller : </span><span class="kc">null</span>
<span class="nv">Request : </span><span class="kc">null</span></pre></div> </td> </tr> <tr id="section-7"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-7">¶</a> </div> <p>putContentFor : null
getContentFor : null</p> </td> <td class="code"> <div class="highlight"><pre></pre></div> </td> </tr> <tr id="section-8"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-8">¶</a> </div> <p>renderTemplate : null
renderPartial : null</p> </td> <td class="code"> <div class="highlight"><pre></pre></div> </td> </tr> <tr id="section-9"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-9">¶</a> </div> <p>respondWithError : null
respondWithTimeout : null
respondWithNotFound : null</p> </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">¶</a> </div> <p>assemble : null</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">work: </span><span class="nf">( object_piece ) -></span>
<span class="nv">index = </span><span class="nx">@Controller</span><span class="p">.</span><span class="nx">register</span><span class="p">(</span> <span class="nx">object_piece</span><span class="p">,</span> <span class="k">this</span> <span class="p">)</span>
<span class="nx">@Request</span><span class="p">.</span><span class="nx">parseRoutes</span><span class="p">(</span> <span class="nx">index</span><span class="p">,</span> <span class="k">this</span> <span class="p">)</span></pre></div> </td> </tr> <tr id="section-11"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-11">¶</a> </div> <p>build : null</p> </td> <td class="code"> <div class="highlight"><pre></pre></div> </td> </tr> <tr id="section-12"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-12">¶</a> </div> <p>registerObject : null
createObject : null</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">dispatch : </span><span class="nf">( request, response ) -></span>
<span class="k">return</span> <span class="kc">null</span> <span class="nx">unless</span> <span class="nx">@Request</span></pre></div> </td> </tr> <tr id="section-13"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-13">¶</a> </div> <p>Extend Request with Application</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">request.application = </span><span class="k">this</span></pre></div> </td> </tr> <tr id="section-14"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-14">¶</a> </div> <p>Extend Response with Application</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">response.application = </span><span class="k">this</span>
<span class="nx">@Request</span><span class="p">.</span><span class="nx">dispatch</span><span class="p">(</span> <span class="nx">request</span><span class="p">,</span> <span class="nx">response</span> <span class="p">)</span>
<span class="nv">createServer : </span><span class="o">-></span>
<span class="nx">Common</span><span class="p">.</span><span class="nx">Http</span><span class="p">.</span><span class="nx">createServer</span><span class="p">(</span> <span class="nx">@dispatch</span><span class="p">.</span><span class="nx">bind</span><span class="p">(</span> <span class="k">this</span> <span class="p">)</span> <span class="p">)</span>
<span class="nv">createSecureServer : </span><span class="nf">( privateKey, certificate ) -></span>
<span class="nv">credentials = </span><span class="nx">Common</span><span class="p">.</span><span class="nx">Crypt</span><span class="p">.</span><span class="nx">createCredentials</span> <span class="p">{</span>
<span class="nv">key : </span><span class="nx">privateKey</span>
<span class="nv">cert : </span><span class="nx">certificate</span>
<span class="p">}</span>
<span class="nv">secureServer = </span><span class="nx">Common</span><span class="p">.</span><span class="nx">Http</span><span class="p">.</span><span class="nx">createServer</span><span class="p">(</span> <span class="nx">@dispatch</span><span class="p">.</span><span class="nx">bind</span><span class="p">(</span> <span class="k">this</span> <span class="p">)</span> <span class="p">)</span>
<span class="nx">secureServer</span><span class="p">.</span><span class="nx">setSecure</span><span class="p">(</span> <span class="nx">credentials</span> <span class="p">)</span>
<span class="nx">secureServer</span>
<span class="nv">configurePackage : </span><span class="nf">( name, packages ) -></span>
<span class="k">this</span><span class="p">[</span> <span class="nx">name</span> <span class="p">]</span> <span class="o">=</span> <span class="k">if</span> <span class="nx">packages</span><span class="p">[</span><span class="nx">name</span><span class="p">]</span> <span class="k">then</span> <span class="k">new</span> <span class="nx">packages</span><span class="p">[</span> <span class="nx">name</span> <span class="p">]()</span> <span class="k">else</span> <span class="nb">eval</span><span class="p">(</span><span class="s">'new Arcabouco'</span> <span class="o">+</span> <span class="nx">name</span> <span class="o">+</span> <span class="s">'()'</span><span class="p">)</span></pre></div> </td> </tr> <tr id="section-15"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-15">¶</a> </div> <h2>The Application Fabric</h2>
<p>A constructor must be called with a configuration options.
These configurations can change everything because all
our functions are just a proxy to internal components.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">constructor : </span><span class="nf">( @config = {} ) -></span></pre></div> </td> </tr> <tr id="section-16"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-16">¶</a> </div> <p>Try to use some user defined packages if they are sent</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nv">packages = </span><span class="k">if</span> <span class="nx">@config</span><span class="p">.</span><span class="nx">packages</span> <span class="k">then</span> <span class="nx">@config</span><span class="p">.</span><span class="nx">packages</span> <span class="k">else</span> <span class="p">{}</span></pre></div> </td> </tr> <tr id="section-17"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-17">¶</a> </div> <p>Load the packages checking for a user defined one, use a default if none is suplied</p> </td> <td class="code"> <div class="highlight"><pre> <span class="k">for</span> <span class="nx">packageName</span> <span class="k">in</span> <span class="p">[</span><span class="s">'Template'</span><span class="p">,</span><span class="s">'Content'</span><span class="p">,</span><span class="s">'ObjectPool'</span><span class="p">,</span><span class="s">'Controller'</span><span class="p">,</span><span class="s">'Request'</span><span class="p">]</span>
<span class="nx">@configurePackage</span><span class="p">(</span> <span class="nx">packageName</span> <span class="o">+</span> <span class="s">''</span><span class="p">,</span> <span class="nx">packages</span> <span class="p">)</span></pre></div> </td> </tr> <tr id="section-18"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-18">¶</a> </div> <p>Configure delegated methods</p> </td> <td class="code"> <div class="highlight"><pre><span class="nv">module.exports = </span><span class="nx">Arcabouco</span>
</pre></div> </td> </tr> </tbody> </table> </div> </body> </html>