UNPKG

nodulator

Version:

Complete NodeJS Framework for Restfull APIs

328 lines (211 loc) 10.1 kB
<!DOCTYPE html> <html> <head> <title>ChangeWatcher.ls</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 &hellip;</a> <a class="small" href="javascript:void(0);">+</a> <div id="jump_wrapper"> <div id="jump_page_wrapper"> <div id="jump_page"> <a class="source" href="Nodulator.html"> Nodulator.ls </a> <a class="source" href="ClientDB.html"> ClientDB.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="Resource.html"> Resource.ls </a> <a class="source" href="Bus.html"> Bus.ls </a> <a class="source" href="Cache.html"> Cache.ls </a> <a class="source" href="ChangeWatcher.html"> ChangeWatcher.ls </a> <a class="source" href="Debug.html"> Debug.ls </a> <a class="source" href="Wrappers.html"> Wrappers.ls </a> <a class="source" href="Nodulator.html"> Nodulator.ls </a> <a class="source" href="Resource.html"> Resource.ls </a> <a class="source" href="Schema.html"> Schema.ls </a> <a class="source" href="NModule.html"> NModule.ls </a> <a class="source" href="AccountResource.html"> AccountResource.ls </a> <a class="source" href="User.html"> User.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="Nodulator-Angular.html"> Nodulator-Angular.ls </a> <a class="source" href="TaskDirective.html"> TaskDirective.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="TaskService.html"> TaskService.ls </a> <a class="source" href="main.html"> main.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="Task.html"> Task.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="DOM.html"> DOM.ls </a> <a class="source" href="View.html"> View.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="Nodulator.html"> Nodulator.ls </a> <a class="source" href="Mongo.html"> Mongo.ls </a> <a class="source" href="Mysql.html"> Mysql.ls </a> <a class="source" href="SqlMem.html"> SqlMem.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="Resource.html"> Resource.ls </a> <a class="source" href="Request.html"> Request.ls </a> <a class="source" href="Route.html"> Route.ls </a> <a class="source" href="index.html"> index.ls </a> </div> </div> </li> </ul> <ul class="sections"> <li id="title"> <div class="annotation"> <h1>ChangeWatcher.ls</h1> </div> </li> <li id="section-1"> <div class="annotation"> <div class="pilwrap "> <a class="pilcrow" href="#section-1">&#182;</a> </div> </div> <div class="content"><div class='highlight'><pre>_ = <span class="hljs-built_in">require</span> <span class="hljs-string">'underscore'</span> Hacktiv = <span class="hljs-built_in">require</span> <span class="hljs-string">'hacktiv'</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">ChangeWatcher</span></span> func: <span class="hljs-literal">null</span> args: <span class="hljs-literal">null</span> res: {} @list = [] (@func, @args, @instance, N) -&gt; @dep = <span class="hljs-keyword">new</span> Hacktiv.Dependency @doneIdx = @_FindDone() @args[@doneIdx] = @_WrapDoneFirst() _FindDone: <span class="hljs-function">-&gt;</span> <span class="hljs-keyword">for</span> arg, i <span class="hljs-keyword">in</span> @args <span class="hljs-keyword">if</span> <span class="hljs-keyword">typeof</span>(arg) <span class="hljs-keyword">is</span> <span class="hljs-string">'function'</span> <span class="hljs-keyword">return</span> i <span class="hljs-number">-1</span> _WrapDoneFirst: <span class="hljs-function">-&gt;</span> @_oldDone = @args[@doneIdx] @args[@doneIdx] = (err, res) ~&gt; @res = res @_oldDone.call @instance, err, res @_ReWrap() _ReWrap: <span class="hljs-function">-&gt;</span> @args[@doneIdx] = (err, res) ~&gt; <span class="hljs-keyword">return</span> <span class="hljs-built_in">console</span>.error err <span class="hljs-keyword">if</span> err? <span class="hljs-keyword">if</span> (@res?.length? <span class="hljs-keyword">and</span> res? <span class="hljs-keyword">and</span> @res.length != res.length) <span class="hljs-keyword">or</span> !_(@res).isEqual res @res = res @dep._Changed() Invalidate: <span class="hljs-function">-&gt;</span> @dep._Depends() @func.apply @instance, @args @Watch = <span class="hljs-function"><span class="hljs-params">(func, args, instance, N)</span> -&gt;</span> <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span> <span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> N.Watch.active <span class="hljs-keyword">or</span> _(@list).find (item) -&gt; item.func <span class="hljs-keyword">is</span> func <span class="hljs-keyword">and</span> _(item.args).isEqual args elem = <span class="hljs-keyword">new</span> ChangeWatcher func, args, instance @list.push elem elem.Invalidate() elem @Invalidate = <span class="hljs-function">-&gt;</span></pre></div></div> </li> <li id="section-2"> <div class="annotation"> <div class="pilwrap "> <a class="pilcrow" href="#section-2">&#182;</a> </div> <p>console.log ‘Invalidate’, @list</p> </div> <div class="content"><div class='highlight'><pre> <span class="hljs-keyword">for</span> watcher <span class="hljs-keyword">in</span> @list watcher.Invalidate() <span class="hljs-built_in">module</span>.exports = ChangeWatcher</pre></div></div> </li> </ul> </div> </body> </html>