UNPKG

freight.js

Version:

An simple CommonJS dependency injection container for both node.js and the browser (using browserify)

92 lines (70 loc) 13.1 kB
<!DOCTYPE html><html lang="en"><head><title>basic-usage_example</title></head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"><meta name="groc-relative-root" content=""><meta name="groc-document-path" content="basic-usage_example"><meta name="groc-project-path" content="test/examples/basic-usage_example.js"><link rel="stylesheet" type="text/css" media="all" href="assets/style.css"><script type="text/javascript" src="assets/behavior.js"></script><body><div id="meta"><div class="file-path">test/examples/basic-usage_example.js</div></div><div id="document"><div class="segment"><div class="code"><div class="wrapper"><span class="kd">var</span> <span class="nx">Freight</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;./../../src/freight.js&#39;</span><span class="p">);</span> <span class="kd">var</span> <span class="nx">Definition</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;./../../src/definition.js&#39;</span><span class="p">);</span></div></div></div><div class="segment"><div class="comments "><div class="wrapper"><h1 id="creating-services">Creating services</h1></div></div></div><div class="segment"><div class="code"><div class="wrapper"><span class="nx">describe</span><span class="p">(</span><span class="s1">&#39;Basic Usage&#39;</span><span class="p">,</span> <span class="kd">function</span><span class="p">(){</span> <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;Build a Castle&#39;</span><span class="p">,</span> <span class="kd">function</span><span class="p">(){</span> <span class="kd">var</span> <span class="nx">Castle</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">knight</span><span class="p">,</span> <span class="nx">towers</span><span class="p">)</span> <span class="p">{</span> <span class="k">this</span><span class="p">.</span><span class="nx">knight</span> <span class="o">=</span> <span class="nx">knight</span><span class="p">;</span> <span class="k">this</span><span class="p">.</span><span class="nx">towers</span> <span class="o">=</span> <span class="nx">towers</span><span class="p">;</span> <span class="p">};</span> <span class="kd">var</span> <span class="nx">Tower</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">height</span><span class="p">)</span> <span class="p">{</span> <span class="k">this</span><span class="p">.</span><span class="nx">height</span> <span class="o">=</span> <span class="nx">height</span><span class="p">;</span> <span class="p">};</span> <span class="kd">var</span> <span class="nx">Knight</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">name</span><span class="p">,</span> <span class="nx">sword</span><span class="p">,</span> <span class="nx">attributes</span><span class="p">)</span> <span class="p">{</span> <span class="k">this</span><span class="p">.</span><span class="nx">name</span> <span class="o">=</span> <span class="nx">name</span><span class="p">;</span> <span class="k">this</span><span class="p">.</span><span class="nx">sword</span> <span class="o">=</span> <span class="nx">sword</span><span class="p">;</span> <span class="k">this</span><span class="p">.</span><span class="nx">attributes</span> <span class="o">=</span> <span class="nx">attributes</span><span class="p">;</span> <span class="p">};</span> <span class="kd">var</span> <span class="nx">Sword</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">name</span><span class="p">)</span> <span class="p">{</span> <span class="k">this</span><span class="p">.</span><span class="nx">name</span> <span class="o">=</span> <span class="nx">name</span><span class="p">;</span> <span class="k">this</span><span class="p">.</span><span class="nx">fastenGrip</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span> <span class="k">this</span><span class="p">.</span><span class="nx">fastened</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span> <span class="p">};</span> <span class="k">this</span><span class="p">.</span><span class="nx">sharpenBlade</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span> <span class="k">this</span><span class="p">.</span><span class="nx">sharpened</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span> <span class="p">};</span> <span class="p">};</span> <span class="kd">var</span> <span class="nx">services</span> <span class="o">=</span> <span class="p">{</span> <span class="s2">&quot;castle_fret&quot;</span><span class="o">:</span> <span class="p">{</span> <span class="s2">&quot;shared&quot;</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span> <span class="s2">&quot;constructorFn&quot;</span><span class="o">:</span> <span class="s2">&quot;:castle.class&quot;</span><span class="p">,</span> <span class="s2">&quot;arguments&quot;</span><span class="o">:</span> <span class="p">[</span><span class="s2">&quot;:sir_freight&quot;</span><span class="p">,</span> <span class="p">[</span><span class="s2">&quot;:tower&quot;</span><span class="p">,</span> <span class="s2">&quot;:tower&quot;</span><span class="p">,</span> <span class="p">[</span><span class="s2">&quot;:tower&quot;</span><span class="p">,</span> <span class="s2">&quot;:tower&quot;</span><span class="p">]]]</span> <span class="p">},</span> <span class="s2">&quot;sir_freight&quot;</span><span class="o">:</span> <span class="p">{</span> <span class="s2">&quot;shared&quot;</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span> <span class="s2">&quot;constructorFn&quot;</span><span class="o">:</span> <span class="s2">&quot;:knight.class&quot;</span><span class="p">,</span> <span class="s2">&quot;arguments&quot;</span><span class="o">:</span> <span class="p">[</span><span class="s2">&quot;Sir Freight&quot;</span><span class="p">,</span> <span class="s2">&quot;:sword&quot;</span><span class="p">,</span> <span class="p">{</span> <span class="s2">&quot;strength&quot;</span><span class="o">:</span> <span class="mi">40</span><span class="p">,</span> <span class="s2">&quot;dexterity&quot;</span><span class="o">:</span> <span class="mi">100</span><span class="p">,</span> <span class="s2">&quot;quest&quot;</span><span class="o">:</span> <span class="s2">&quot;:knight.quest&quot;</span><span class="p">,</span> <span class="s2">&quot;tower&quot;</span><span class="o">:</span> <span class="s2">&quot;:tower&quot;</span> <span class="p">}]</span> <span class="p">},</span> <span class="s2">&quot;sword&quot;</span><span class="o">:</span> <span class="p">{</span> <span class="s2">&quot;factoryFn&quot;</span><span class="o">:</span> <span class="s2">&quot;:sword.factory&quot;</span> <span class="p">},</span> <span class="s2">&quot;tower&quot;</span><span class="o">:</span> <span class="p">{</span> <span class="s2">&quot;constructorFn&quot;</span><span class="o">:</span> <span class="s2">&quot;:tower.class&quot;</span><span class="p">,</span> <span class="s2">&quot;arguments&quot;</span><span class="o">:</span> <span class="p">[</span><span class="s2">&quot;:tower.height&quot;</span><span class="p">]</span> <span class="p">}</span> <span class="p">};</span> <span class="kd">var</span> <span class="nx">container</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Freight</span><span class="p">();</span> <span class="nx">container</span><span class="p">.</span><span class="nx">registerAll</span><span class="p">(</span><span class="nx">services</span><span class="p">);</span> <span class="nx">container</span><span class="p">.</span><span class="nx">setParameter</span><span class="p">(</span><span class="s1">&#39;castle.class&#39;</span><span class="p">,</span> <span class="nx">Castle</span><span class="p">)</span> <span class="p">.</span><span class="nx">setParameter</span><span class="p">(</span><span class="s1">&#39;tower.class&#39;</span><span class="p">,</span> <span class="nx">Tower</span><span class="p">)</span> <span class="p">.</span><span class="nx">setParameter</span><span class="p">(</span><span class="s1">&#39;tower.height&#39;</span><span class="p">,</span> <span class="mi">30</span><span class="p">)</span> <span class="p">.</span><span class="nx">setParameter</span><span class="p">(</span><span class="s1">&#39;knight.class&#39;</span><span class="p">,</span> <span class="nx">Knight</span><span class="p">)</span> <span class="p">.</span><span class="nx">setParameter</span><span class="p">(</span><span class="s1">&#39;knight.quest&#39;</span><span class="p">,</span> <span class="s1">&#39;Define all the dependencies!&#39;</span><span class="p">)</span> <span class="p">.</span><span class="nx">setParameter</span><span class="p">(</span><span class="s1">&#39;sword.factory&#39;</span><span class="p">,</span> <span class="kd">function</span><span class="p">(){</span> <span class="kd">var</span> <span class="nx">sword</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Sword</span><span class="p">(</span><span class="s1">&#39;Excalibur&#39;</span><span class="p">);</span> <span class="nx">sword</span><span class="p">.</span><span class="nx">fastenGrip</span><span class="p">();</span> <span class="nx">sword</span><span class="p">.</span><span class="nx">sharpenBlade</span><span class="p">();</span> <span class="k">return</span> <span class="nx">sword</span><span class="p">;</span> <span class="p">});</span> <span class="kd">var</span> <span class="nx">castle</span> <span class="o">=</span> <span class="nx">container</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s1">&#39;castle_fret&#39;</span><span class="p">);</span> <span class="nx">castle</span><span class="p">.</span><span class="nx">knight</span><span class="p">.</span><span class="nx">name</span><span class="p">.</span><span class="nx">should</span><span class="p">.</span><span class="nx">equal</span><span class="p">(</span><span class="s1">&#39;Sir Freight&#39;</span><span class="p">);</span> <span class="nx">castle</span><span class="p">.</span><span class="nx">knight</span><span class="p">.</span><span class="nx">attributes</span><span class="p">.</span><span class="nx">dexterity</span><span class="p">.</span><span class="nx">should</span><span class="p">.</span><span class="nx">equal</span><span class="p">(</span><span class="mi">100</span><span class="p">);</span> <span class="nx">castle</span><span class="p">.</span><span class="nx">knight</span><span class="p">.</span><span class="nx">sword</span><span class="p">.</span><span class="nx">name</span><span class="p">.</span><span class="nx">should</span><span class="p">.</span><span class="nx">equal</span><span class="p">(</span><span class="s1">&#39;Excalibur&#39;</span><span class="p">);</span> <span class="nx">castle</span><span class="p">.</span><span class="nx">knight</span><span class="p">.</span><span class="nx">sword</span><span class="p">.</span><span class="nx">sharpened</span><span class="p">.</span><span class="nx">should</span><span class="p">.</span><span class="nx">equal</span><span class="p">(</span><span class="kc">true</span><span class="p">);</span> <span class="nx">castle</span><span class="p">.</span><span class="nx">knight</span><span class="p">.</span><span class="nx">sword</span><span class="p">.</span><span class="nx">fastened</span><span class="p">.</span><span class="nx">should</span><span class="p">.</span><span class="nx">equal</span><span class="p">(</span><span class="kc">true</span><span class="p">);</span> <span class="nx">castle</span><span class="p">.</span><span class="nx">towers</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="nx">height</span><span class="p">.</span><span class="nx">should</span><span class="p">.</span><span class="nx">equal</span><span class="p">(</span><span class="mi">30</span><span class="p">);</span> <span class="p">});</span> <span class="p">});</span></div></div></div></div></body></html>