nodulator
Version:
Complete NodeJS Framework for Restfull APIs
328 lines (211 loc) • 10.1 kB
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 …</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">¶</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) ->
@dep = <span class="hljs-keyword">new</span> Hacktiv.Dependency
@doneIdx = @_FindDone()
@args[@doneIdx] = @_WrapDoneFirst()
_FindDone: <span class="hljs-function">-></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">-></span>
@_oldDone = @args[@doneIdx]
@args[@doneIdx] = (err, res) ~>
@res = res
@_oldDone.call @instance, err, res
@_ReWrap()
_ReWrap: <span class="hljs-function">-></span>
@args[@doneIdx] = (err, res) ~>
<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">-></span>
@dep._Depends()
@func.apply @instance, @args
@Watch = <span class="hljs-function"><span class="hljs-params">(func, args, instance, N)</span> -></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) -> 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">-></span></pre></div></div>
</li>
<li id="section-2">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-2">¶</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>