Build 0.5.1.
Showing
5 changed files
with
83 additions
and
83 deletions
... | @@ -2,7 +2,7 @@ | ... | @@ -2,7 +2,7 @@ |
2 | "name": "rivets", | 2 | "name": "rivets", |
3 | "repo": "mikeric/rivets", | 3 | "repo": "mikeric/rivets", |
4 | "description": "Declarative data binding facility.", | 4 | "description": "Declarative data binding facility.", |
5 | "version": "0.5.0", | 5 | "version": "0.5.1", |
6 | "keywords": ["data binding", "templating"], | 6 | "keywords": ["data binding", "templating"], |
7 | "scripts": ["dist/rivets.js"], | 7 | "scripts": ["dist/rivets.js"], |
8 | "main": "dist/rivets.js", | 8 | "main": "dist/rivets.js", | ... | ... |
1 | // rivets.js | 1 | // Rivets.js |
2 | // version: 0.5.0 | 2 | // version: 0.5.1 |
3 | // author: Michael Richards | 3 | // author: Michael Richards |
4 | // license: MIT | 4 | // license: MIT |
5 | (function() { | 5 | (function() { |
6 | var Rivets, bindEvent, factory, getInputValue, unbindEvent, | 6 | var Rivets, |
7 | __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, | 7 | __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, |
8 | __slice = [].slice, | 8 | __slice = [].slice, |
9 | __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; | 9 | __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; |
... | @@ -58,14 +58,14 @@ | ... | @@ -58,14 +58,14 @@ |
58 | } | 58 | } |
59 | 59 | ||
60 | Binding.prototype.formattedValue = function(value) { | 60 | Binding.prototype.formattedValue = function(value) { |
61 | var args, formatter, id, _i, _len, _ref, _ref1, _ref2, _ref3; | 61 | var args, formatter, id, _i, _len, _ref; |
62 | 62 | ||
63 | _ref = this.formatters; | 63 | _ref = this.formatters; |
64 | for (_i = 0, _len = _ref.length; _i < _len; _i++) { | 64 | for (_i = 0, _len = _ref.length; _i < _len; _i++) { |
65 | formatter = _ref[_i]; | 65 | formatter = _ref[_i]; |
66 | args = formatter.split(/\s+/); | 66 | args = formatter.split(/\s+/); |
67 | id = args.shift(); | 67 | id = args.shift(); |
68 | formatter = this.model[id] instanceof Function ? this.model[id] : ((_ref1 = this.options) != null ? (_ref2 = _ref1.bindingOptions) != null ? (_ref3 = _ref2.formatters) != null ? _ref3[id] : void 0 : void 0 : void 0) instanceof Function ? this.options.bindingOptions.formatters[id] : this.view.formatters[id]; | 68 | formatter = this.model[id] instanceof Function ? this.model[id] : this.view.formatters[id]; |
69 | if ((formatter != null ? formatter.read : void 0) instanceof Function) { | 69 | if ((formatter != null ? formatter.read : void 0) instanceof Function) { |
70 | value = formatter.read.apply(formatter, [value].concat(__slice.call(args))); | 70 | value = formatter.read.apply(formatter, [value].concat(__slice.call(args))); |
71 | } else if (formatter instanceof Function) { | 71 | } else if (formatter instanceof Function) { |
... | @@ -89,7 +89,7 @@ | ... | @@ -89,7 +89,7 @@ |
89 | Binding.prototype.publish = function() { | 89 | Binding.prototype.publish = function() { |
90 | var args, formatter, id, value, _i, _len, _ref, _ref1, _ref2; | 90 | var args, formatter, id, value, _i, _len, _ref, _ref1, _ref2; |
91 | 91 | ||
92 | value = getInputValue(this.el); | 92 | value = Rivets.Util.getInputValue(this.el); |
93 | _ref = this.formatters.slice(0).reverse(); | 93 | _ref = this.formatters.slice(0).reverse(); |
94 | for (_i = 0, _len = _ref.length; _i < _len; _i++) { | 94 | for (_i = 0, _len = _ref.length; _i < _len; _i++) { |
95 | formatter = _ref[_i]; | 95 | formatter = _ref[_i]; |
... | @@ -424,71 +424,71 @@ | ... | @@ -424,71 +424,71 @@ |
424 | 424 | ||
425 | })(); | 425 | })(); |
426 | 426 | ||
427 | bindEvent = function(el, event, handler, context) { | 427 | Rivets.Util = { |
428 | var fn; | 428 | bindEvent: function(el, event, handler, context) { |
429 | var fn; | ||
429 | 430 | ||
430 | fn = function(e) { | 431 | fn = function(e) { |
431 | return handler.call(context, e); | 432 | return handler.call(context, e); |
432 | }; | 433 | }; |
433 | if (window.jQuery != null) { | 434 | if (window.jQuery != null) { |
434 | el = jQuery(el); | 435 | el = jQuery(el); |
435 | if (el.on != null) { | 436 | if (el.on != null) { |
436 | el.on(event, fn); | 437 | el.on(event, fn); |
438 | } else { | ||
439 | el.bind(event, fn); | ||
440 | } | ||
441 | } else if (window.addEventListener != null) { | ||
442 | el.addEventListener(event, fn, false); | ||
437 | } else { | 443 | } else { |
438 | el.bind(event, fn); | 444 | event = 'on' + event; |
445 | el.attachEvent(event, fn); | ||
439 | } | 446 | } |
440 | } else if (window.addEventListener != null) { | 447 | return fn; |
441 | el.addEventListener(event, fn, false); | 448 | }, |
442 | } else { | 449 | unbindEvent: function(el, event, fn) { |
443 | event = 'on' + event; | 450 | if (window.jQuery != null) { |
444 | el.attachEvent(event, fn); | 451 | el = jQuery(el); |
445 | } | 452 | if (el.off != null) { |
446 | return fn; | 453 | return el.off(event, fn); |
447 | }; | 454 | } else { |
448 | 455 | return el.unbind(event, fn); | |
449 | unbindEvent = function(el, event, fn) { | 456 | } |
450 | if (window.jQuery != null) { | 457 | } else if (window.removeEventListener) { |
451 | el = jQuery(el); | 458 | return el.removeEventListener(event, fn, false); |
452 | if (el.off != null) { | ||
453 | return el.off(event, fn); | ||
454 | } else { | 459 | } else { |
455 | return el.unbind(event, fn); | 460 | event = 'on' + event; |
461 | return el.detachEvent(event, fn); | ||
456 | } | 462 | } |
457 | } else if (window.removeEventListener) { | 463 | }, |
458 | return el.removeEventListener(event, fn, false); | 464 | getInputValue: function(el) { |
459 | } else { | 465 | var o, _i, _len, _results; |
460 | event = 'on' + event; | 466 | |
461 | return el.detachEvent(event, fn); | 467 | if (window.jQuery != null) { |
462 | } | 468 | el = jQuery(el); |
463 | }; | 469 | switch (el[0].type) { |
464 | 470 | case 'checkbox': | |
465 | getInputValue = function(el) { | 471 | return el.is(':checked'); |
466 | var o, _i, _len, _results; | 472 | default: |
467 | 473 | return el.val(); | |
468 | if (window.jQuery != null) { | 474 | } |
469 | el = jQuery(el); | 475 | } else { |
470 | switch (el[0].type) { | 476 | switch (el.type) { |
471 | case 'checkbox': | 477 | case 'checkbox': |
472 | return el.is(':checked'); | 478 | return el.checked; |
473 | default: | 479 | case 'select-multiple': |
474 | return el.val(); | 480 | _results = []; |
475 | } | 481 | for (_i = 0, _len = el.length; _i < _len; _i++) { |
476 | } else { | 482 | o = el[_i]; |
477 | switch (el.type) { | 483 | if (o.selected) { |
478 | case 'checkbox': | 484 | _results.push(o.value); |
479 | return el.checked; | 485 | } |
480 | case 'select-multiple': | ||
481 | _results = []; | ||
482 | for (_i = 0, _len = el.length; _i < _len; _i++) { | ||
483 | o = el[_i]; | ||
484 | if (o.selected) { | ||
485 | _results.push(o.value); | ||
486 | } | 486 | } |
487 | } | 487 | return _results; |
488 | return _results; | 488 | break; |
489 | break; | 489 | default: |
490 | default: | 490 | return el.value; |
491 | return el.value; | 491 | } |
492 | } | 492 | } |
493 | } | 493 | } |
494 | }; | 494 | }; |
... | @@ -503,10 +503,10 @@ | ... | @@ -503,10 +503,10 @@ |
503 | checked: { | 503 | checked: { |
504 | publishes: true, | 504 | publishes: true, |
505 | bind: function(el) { | 505 | bind: function(el) { |
506 | return this.currentListener = bindEvent(el, 'change', this.publish); | 506 | return this.currentListener = Rivets.Util.bindEvent(el, 'change', this.publish); |
507 | }, | 507 | }, |
508 | unbind: function(el) { | 508 | unbind: function(el) { |
509 | return unbindEvent(el, 'change', this.currentListener); | 509 | return Rivets.Util.unbindEvent(el, 'change', this.currentListener); |
510 | }, | 510 | }, |
511 | routine: function(el, value) { | 511 | routine: function(el, value) { |
512 | var _ref; | 512 | var _ref; |
... | @@ -521,10 +521,10 @@ | ... | @@ -521,10 +521,10 @@ |
521 | unchecked: { | 521 | unchecked: { |
522 | publishes: true, | 522 | publishes: true, |
523 | bind: function(el) { | 523 | bind: function(el) { |
524 | return this.currentListener = bindEvent(el, 'change', this.publish); | 524 | return this.currentListener = Rivets.Util.bindEvent(el, 'change', this.publish); |
525 | }, | 525 | }, |
526 | unbind: function(el) { | 526 | unbind: function(el) { |
527 | return unbindEvent(el, 'change', this.currentListener); | 527 | return Rivets.Util.unbindEvent(el, 'change', this.currentListener); |
528 | }, | 528 | }, |
529 | routine: function(el, value) { | 529 | routine: function(el, value) { |
530 | var _ref; | 530 | var _ref; |
... | @@ -548,10 +548,10 @@ | ... | @@ -548,10 +548,10 @@ |
548 | value: { | 548 | value: { |
549 | publishes: true, | 549 | publishes: true, |
550 | bind: function(el) { | 550 | bind: function(el) { |
551 | return this.currentListener = bindEvent(el, 'change', this.publish); | 551 | return this.currentListener = Rivets.Util.bindEvent(el, 'change', this.publish); |
552 | }, | 552 | }, |
553 | unbind: function(el) { | 553 | unbind: function(el) { |
554 | return unbindEvent(el, 'change', this.currentListener); | 554 | return Rivets.Util.unbindEvent(el, 'change', this.currentListener); |
555 | }, | 555 | }, |
556 | routine: function(el, value) { | 556 | routine: function(el, value) { |
557 | var o, _i, _len, _ref, _ref1, _ref2, _results; | 557 | var o, _i, _len, _ref, _ref1, _ref2, _results; |
... | @@ -588,9 +588,9 @@ | ... | @@ -588,9 +588,9 @@ |
588 | "function": true, | 588 | "function": true, |
589 | routine: function(el, value) { | 589 | routine: function(el, value) { |
590 | if (this.currentListener) { | 590 | if (this.currentListener) { |
591 | unbindEvent(el, this.args[0], this.currentListener); | 591 | Rivets.Util.unbindEvent(el, this.args[0], this.currentListener); |
592 | } | 592 | } |
593 | return this.currentListener = bindEvent(el, this.args[0], value, this.model); | 593 | return this.currentListener = Rivets.Util.bindEvent(el, this.args[0], value, this.model); |
594 | } | 594 | } |
595 | }, | 595 | }, |
596 | "each-*": { | 596 | "each-*": { |
... | @@ -676,7 +676,7 @@ | ... | @@ -676,7 +676,7 @@ |
676 | 676 | ||
677 | Rivets.formatters = {}; | 677 | Rivets.formatters = {}; |
678 | 678 | ||
679 | factory = function(exports) { | 679 | Rivets.factory = function(exports) { |
680 | exports.binders = Rivets.binders; | 680 | exports.binders = Rivets.binders; |
681 | exports.formatters = Rivets.formatters; | 681 | exports.formatters = Rivets.formatters; |
682 | exports.config = Rivets.config; | 682 | exports.config = Rivets.config; |
... | @@ -707,14 +707,14 @@ | ... | @@ -707,14 +707,14 @@ |
707 | }; | 707 | }; |
708 | 708 | ||
709 | if (typeof exports === 'object') { | 709 | if (typeof exports === 'object') { |
710 | factory(exports); | 710 | Rivets.factory(exports); |
711 | } else if (typeof define === 'function' && define.amd) { | 711 | } else if (typeof define === 'function' && define.amd) { |
712 | define(['exports'], function(exports) { | 712 | define(['exports'], function(exports) { |
713 | factory(this.rivets = exports); | 713 | Rivets.factory(this.rivets = exports); |
714 | return exports; | 714 | return exports; |
715 | }); | 715 | }); |
716 | } else { | 716 | } else { |
717 | factory(this.rivets = {}); | 717 | Rivets.factory(this.rivets = {}); |
718 | } | 718 | } |
719 | 719 | ||
720 | }).call(this); | 720 | }).call(this); | ... | ... |
1 | // rivets.js | 1 | // Rivets.js |
2 | // version: 0.5.0 | 2 | // version: 0.5.1 |
3 | // author: Michael Richards | 3 | // author: Michael Richards |
4 | // license: MIT | 4 | // license: MIT |
5 | (function(){var t,i,e,n,s,r=function(t,i){return function(){return t.apply(i,arguments)}},h=[].slice,o=[].indexOf||function(t){for(var i=0,e=this.length;e>i;i++)if(i in this&&this[i]===t)return i;return-1};t={},String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")}),t.Binding=function(){function t(t,i,e,n,s,h){var o,u,l,a;if(this.view=t,this.el=i,this.type=e,this.key=n,this.keypath=s,this.options=null!=h?h:{},this.update=r(this.update,this),this.unbind=r(this.unbind,this),this.bind=r(this.bind,this),this.publish=r(this.publish,this),this.sync=r(this.sync,this),this.set=r(this.set,this),this.formattedValue=r(this.formattedValue,this),!(this.binder=this.view.binders[e])){a=this.view.binders;for(o in a)l=a[o],"*"!==o&&-1!==o.indexOf("*")&&(u=RegExp("^"+o.replace("*",".+")+"$"),u.test(e)&&(this.binder=l,this.args=RegExp("^"+o.replace("*","(.+)")+"$").exec(e),this.args.shift()))}this.binder||(this.binder=this.view.binders["*"]),this.binder instanceof Function&&(this.binder={routine:this.binder}),this.formatters=this.options.formatters||[],this.model=this.view.models[this.key]}return t.prototype.formattedValue=function(t){var i,e,n,s,r,o,u,l,a;for(o=this.formatters,s=0,r=o.length;r>s;s++)e=o[s],i=e.split(/\s+/),n=i.shift(),e=this.model[n]instanceof Function?this.model[n]:(null!=(u=this.options)?null!=(l=u.bindingOptions)?null!=(a=l.formatters)?a[n]:void 0:void 0:void 0)instanceof Function?this.options.bindingOptions.formatters[n]:this.view.formatters[n],(null!=e?e.read:void 0)instanceof Function?t=e.read.apply(e,[t].concat(h.call(i))):e instanceof Function&&(t=e.apply(null,[t].concat(h.call(i))));return t},t.prototype.set=function(t){var i;return t=t instanceof Function&&!this.binder["function"]?this.formattedValue(t.call(this.model)):this.formattedValue(t),null!=(i=this.binder.routine)?i.call(this,this.el,t):void 0},t.prototype.sync=function(){return this.set(this.options.bypass?this.model[this.keypath]:this.view.config.adapter.read(this.model,this.keypath))},t.prototype.publish=function(){var t,i,e,s,r,o,u,l,a;for(s=n(this.el),u=this.formatters.slice(0).reverse(),r=0,o=u.length;o>r;r++)i=u[r],t=i.split(/\s+/),e=t.shift(),(null!=(l=this.view.formatters[e])?l.publish:void 0)&&(s=(a=this.view.formatters[e]).publish.apply(a,[s].concat(h.call(t))));return this.view.config.adapter.publish(this.model,this.keypath,s)},t.prototype.bind=function(){var t,i,e,n,s,r,h,o,u;if(null!=(r=this.binder.bind)&&r.call(this,this.el),this.options.bypass?this.sync():(this.view.config.adapter.subscribe(this.model,this.keypath,this.sync),this.view.config.preloadData&&this.sync()),null!=(h=this.options.dependencies)?h.length:void 0){for(o=this.options.dependencies,u=[],n=0,s=o.length;s>n;n++)t=o[n],/^\./.test(t)?(e=this.model,i=t.substr(1)):(t=t.split("."),e=this.view.models[t.shift()],i=t.join(".")),u.push(this.view.config.adapter.subscribe(e,i,this.sync));return u}},t.prototype.unbind=function(){var t,i,e,n,s,r,h,o,u;if(null!=(r=this.binder.unbind)&&r.call(this,this.el),this.options.bypass||this.view.config.adapter.unsubscribe(this.model,this.keypath,this.sync),null!=(h=this.options.dependencies)?h.length:void 0){for(o=this.options.dependencies,u=[],n=0,s=o.length;s>n;n++)t=o[n],/^\./.test(t)?(e=this.model,i=t.substr(1)):(t=t.split("."),e=this.view.models[t.shift()],i=t.join(".")),u.push(this.view.config.adapter.unsubscribe(e,i,this.sync));return u}},t.prototype.update=function(){return this.unbind(),this.model=this.view.models[this.key],this.bind()},t}(),t.View=function(){function i(i,e,n){var s,h,o,u,l,a,d,c,f,p;for(this.els=i,this.models=e,this.options=null!=n?n:{},this.update=r(this.update,this),this.publish=r(this.publish,this),this.sync=r(this.sync,this),this.unbind=r(this.unbind,this),this.bind=r(this.bind,this),this.select=r(this.select,this),this.build=r(this.build,this),this.bindingRegExp=r(this.bindingRegExp,this),this.els.jquery||this.els instanceof Array||(this.els=[this.els]),d=["config","binders","formatters"],l=0,a=d.length;a>l;l++){if(h=d[l],this[h]={},this.options[h]){c=this.options[h];for(s in c)o=c[s],this[h][s]=o}f=t[h];for(s in f)o=f[s],null==(p=(u=this[h])[s])&&(u[s]=o)}this.build()}return i.prototype.bindingRegExp=function(){var t;return t=this.config.prefix,t?RegExp("^data-"+t+"-"):/^data-/},i.prototype.build=function(){var i,e,n,s,r,h,u,l,a,d,c,f=this;for(this.bindings=[],r=[],i=this.bindingRegExp(),s=function(e){var n,s,h,u,l,a,d,c,p,b,v,g,y,m,w,x,k,E,j,L,N,Q,R,V,O,B,F,T;if(0>o.call(r,e)){for(O=e.attributes,j=0,Q=O.length;Q>j;j++)if(n=O[j],i.test(n.name)){if(k=n.name.replace(i,""),!(h=f.binders[k])){B=f.binders;for(d in B)E=B[d],"*"!==d&&-1!==d.indexOf("*")&&(w=RegExp("^"+d.replace("*",".+")+"$"),w.test(k)&&(h=E))}if(h||(h=f.binders["*"]),h.block){for(F=e.getElementsByTagName("*"),L=0,R=F.length;R>L;L++)b=F[L],r.push(b);s=[n]}}for(T=s||e.attributes,N=0,V=T.length;V>N;N++)n=T[N],i.test(n.name)&&(v={},k=n.name.replace(i,""),m=function(){var t,i,e,s;for(e=n.value.split("|"),s=[],t=0,i=e.length;i>t;t++)y=e[t],s.push(y.trim());return s}(),u=function(){var t,i,e,n;for(e=m.shift().split("<"),n=[],t=0,i=e.length;i>t;t++)l=e[t],n.push(l.trim());return n}(),g=u.shift(),x=g.split(/\.|:/),v.formatters=m,v.bypass=-1!==g.indexOf(":"),x[0]?c=x.shift():(c=null,x.shift()),p=x.join("."),null!=f.models[c]&&((a=u.shift())&&(v.dependencies=a.split(/\s+/)),f.bindings.push(new t.Binding(f,e,k,c,p,v))));s&&(s=null)}},d=this.els,h=0,l=d.length;l>h;h++)for(e=d[h],s(e),c=e.getElementsByTagName("*"),u=0,a=c.length;a>u;u++)n=c[u],null!=n.attributes&&s(n)},i.prototype.select=function(t){var i,e,n,s,r;for(s=this.bindings,r=[],e=0,n=s.length;n>e;e++)i=s[e],t(i)&&r.push(i);return r},i.prototype.bind=function(){var t,i,e,n,s;for(n=this.bindings,s=[],i=0,e=n.length;e>i;i++)t=n[i],s.push(t.bind());return s},i.prototype.unbind=function(){var t,i,e,n,s;for(n=this.bindings,s=[],i=0,e=n.length;e>i;i++)t=n[i],s.push(t.unbind());return s},i.prototype.sync=function(){var t,i,e,n,s;for(n=this.bindings,s=[],i=0,e=n.length;e>i;i++)t=n[i],s.push(t.sync());return s},i.prototype.publish=function(){var t,i,e,n,s;for(n=this.select(function(t){return t.binder.publishes}),s=[],i=0,e=n.length;e>i;i++)t=n[i],s.push(t.publish());return s},i.prototype.update=function(t){var i,e,n,s;null==t&&(t={}),s=[];for(e in t)n=t[e],this.models[e]=n,s.push(function(){var t,n,s,r;for(s=this.select(function(t){return t.key===e}),r=[],t=0,n=s.length;n>t;t++)i=s[t],r.push(i.update());return r}.call(this));return s},i}(),i=function(t,i,e,n){var s;return s=function(t){return e.call(n,t)},null!=window.jQuery?(t=jQuery(t),null!=t.on?t.on(i,s):t.bind(i,s)):null!=window.addEventListener?t.addEventListener(i,s,!1):(i="on"+i,t.attachEvent(i,s)),s},s=function(t,i,e){return null!=window.jQuery?(t=jQuery(t),null!=t.off?t.off(i,e):t.unbind(i,e)):window.removeEventListener?t.removeEventListener(i,e,!1):(i="on"+i,t.detachEvent(i,e))},n=function(t){var i,e,n,s;if(null!=window.jQuery)switch(t=jQuery(t),t[0].type){case"checkbox":return t.is(":checked");default:return t.val()}else switch(t.type){case"checkbox":return t.checked;case"select-multiple":for(s=[],e=0,n=t.length;n>e;e++)i=t[e],i.selected&&s.push(i.value);return s;default:return t.value}},t.binders={enabled:function(t,i){return t.disabled=!i},disabled:function(t,i){return t.disabled=!!i},checked:{publishes:!0,bind:function(t){return this.currentListener=i(t,"change",this.publish)},unbind:function(t){return s(t,"change",this.currentListener)},routine:function(t,i){var e;return t.checked="radio"===t.type?(null!=(e=t.value)?""+e:void 0)===(null!=i?""+i:void 0):!!i}},unchecked:{publishes:!0,bind:function(t){return this.currentListener=i(t,"change",this.publish)},unbind:function(t){return s(t,"change",this.currentListener)},routine:function(t,i){var e;return t.checked="radio"===t.type?(null!=(e=t.value)?""+e:void 0)!==(null!=i?""+i:void 0):!i}},show:function(t,i){return t.style.display=i?"":"none"},hide:function(t,i){return t.style.display=i?"none":""},html:function(t,i){return t.innerHTML=null!=i?i:""},value:{publishes:!0,bind:function(t){return this.currentListener=i(t,"change",this.publish)},unbind:function(t){return s(t,"change",this.currentListener)},routine:function(t,i){var e,n,s,r,h,u,l;if(null!=window.jQuery){if(t=jQuery(t),(null!=i?""+i:void 0)!==(null!=(r=t.val())?""+r:void 0))return t.val(null!=i?i:"")}else if("select-multiple"===t.type){if(null!=i){for(l=[],n=0,s=t.length;s>n;n++)e=t[n],l.push(e.selected=(h=e.value,o.call(i,h)>=0));return l}}else if((null!=i?""+i:void 0)!==(null!=(u=t.value)?""+u:void 0))return t.value=null!=i?i:""}},text:function(t,i){return null!=t.innerText?t.innerText=null!=i?i:"":t.textContent=null!=i?i:""},"on-*":{"function":!0,routine:function(t,e){return this.currentListener&&s(t,this.args[0],this.currentListener),this.currentListener=i(t,this.args[0],e,this.model)}},"each-*":{block:!0,bind:function(t){return t.removeAttribute(["data",this.view.config.prefix,this.type].join("-").replace("--","-"))},unbind:function(){var t,i,e,n,s;if(null!=this.iterated){for(n=this.iterated,s=[],i=0,e=n.length;e>i;i++)t=n[i],s.push(t.unbind());return s}},routine:function(i,e){var n,s,r,h,o,u,l,a,d,c,f,p,b,v,g,y,m,w,x;if(null!=this.iterated)for(g=this.iterated,d=0,p=g.length;p>d;d++)for(a=g[d],a.unbind(),y=a.els,c=0,b=y.length;b>c;c++)s=y[c],s.parentNode.removeChild(s);else this.marker=document.createComment(" rivets: "+this.type+" "),i.parentNode.insertBefore(this.marker,i),i.parentNode.removeChild(i);if(this.iterated=[],e){for(x=[],f=0,v=e.length;v>f;f++){r=e[f],n={},m=this.view.models;for(u in m)o=m[u],n[u]=o;n[this.args[0]]=r,h=i.cloneNode(!0),l=this.iterated.length?this.iterated[this.iterated.length-1].els[0]:this.marker,this.marker.parentNode.insertBefore(h,null!=(w=l.nextSibling)?w:null),a=new t.View(h,n,this.view.options),a.bind(),x.push(this.iterated.push(a))}return x}}},"class-*":function(t,i){var e;return e=" "+t.className+" ",!i==(-1!==e.indexOf(" "+this.args[0]+" "))?t.className=i?""+t.className+" "+this.args[0]:e.replace(" "+this.args[0]+" "," ").trim():void 0},"*":function(t,i){return i?t.setAttribute(this.type,i):t.removeAttribute(this.type)}},t.config={preloadData:!0},t.formatters={},e=function(i){return i.binders=t.binders,i.formatters=t.formatters,i.config=t.config,i.configure=function(i){var e,n;null==i&&(i={});for(e in i)n=i[e],t.config[e]=n},i.bind=function(i,e,n){var s;return null==e&&(e={}),null==n&&(n={}),s=new t.View(i,e,n),s.bind(),s}},"object"==typeof exports?e(exports):"function"==typeof define&&define.amd?define(["exports"],function(t){return e(this.rivets=t),t}):e(this.rivets={})}).call(this); | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
5 | (function(){var t,i=function(t,i){return function(){return t.apply(i,arguments)}},e=[].slice,n=[].indexOf||function(t){for(var i=0,e=this.length;e>i;i++)if(i in this&&this[i]===t)return i;return-1};t={},String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")}),t.Binding=function(){function n(t,e,n,s,r,h){var u,o,l,a;if(this.view=t,this.el=e,this.type=n,this.key=s,this.keypath=r,this.options=null!=h?h:{},this.update=i(this.update,this),this.unbind=i(this.unbind,this),this.bind=i(this.bind,this),this.publish=i(this.publish,this),this.sync=i(this.sync,this),this.set=i(this.set,this),this.formattedValue=i(this.formattedValue,this),!(this.binder=this.view.binders[n])){a=this.view.binders;for(u in a)l=a[u],"*"!==u&&-1!==u.indexOf("*")&&(o=RegExp("^"+u.replace("*",".+")+"$"),o.test(n)&&(this.binder=l,this.args=RegExp("^"+u.replace("*","(.+)")+"$").exec(n),this.args.shift()))}this.binder||(this.binder=this.view.binders["*"]),this.binder instanceof Function&&(this.binder={routine:this.binder}),this.formatters=this.options.formatters||[],this.model=this.view.models[this.key]}return n.prototype.formattedValue=function(t){var i,n,s,r,h,u;for(u=this.formatters,r=0,h=u.length;h>r;r++)n=u[r],i=n.split(/\s+/),s=i.shift(),n=this.model[s]instanceof Function?this.model[s]:this.view.formatters[s],(null!=n?n.read:void 0)instanceof Function?t=n.read.apply(n,[t].concat(e.call(i))):n instanceof Function&&(t=n.apply(null,[t].concat(e.call(i))));return t},n.prototype.set=function(t){var i;return t=t instanceof Function&&!this.binder["function"]?this.formattedValue(t.call(this.model)):this.formattedValue(t),null!=(i=this.binder.routine)?i.call(this,this.el,t):void 0},n.prototype.sync=function(){return this.set(this.options.bypass?this.model[this.keypath]:this.view.config.adapter.read(this.model,this.keypath))},n.prototype.publish=function(){var i,n,s,r,h,u,o,l,a;for(r=t.Util.getInputValue(this.el),o=this.formatters.slice(0).reverse(),h=0,u=o.length;u>h;h++)n=o[h],i=n.split(/\s+/),s=i.shift(),(null!=(l=this.view.formatters[s])?l.publish:void 0)&&(r=(a=this.view.formatters[s]).publish.apply(a,[r].concat(e.call(i))));return this.view.config.adapter.publish(this.model,this.keypath,r)},n.prototype.bind=function(){var t,i,e,n,s,r,h,u,o;if(null!=(r=this.binder.bind)&&r.call(this,this.el),this.options.bypass?this.sync():(this.view.config.adapter.subscribe(this.model,this.keypath,this.sync),this.view.config.preloadData&&this.sync()),null!=(h=this.options.dependencies)?h.length:void 0){for(u=this.options.dependencies,o=[],n=0,s=u.length;s>n;n++)t=u[n],/^\./.test(t)?(e=this.model,i=t.substr(1)):(t=t.split("."),e=this.view.models[t.shift()],i=t.join(".")),o.push(this.view.config.adapter.subscribe(e,i,this.sync));return o}},n.prototype.unbind=function(){var t,i,e,n,s,r,h,u,o;if(null!=(r=this.binder.unbind)&&r.call(this,this.el),this.options.bypass||this.view.config.adapter.unsubscribe(this.model,this.keypath,this.sync),null!=(h=this.options.dependencies)?h.length:void 0){for(u=this.options.dependencies,o=[],n=0,s=u.length;s>n;n++)t=u[n],/^\./.test(t)?(e=this.model,i=t.substr(1)):(t=t.split("."),e=this.view.models[t.shift()],i=t.join(".")),o.push(this.view.config.adapter.unsubscribe(e,i,this.sync));return o}},n.prototype.update=function(){return this.unbind(),this.model=this.view.models[this.key],this.bind()},n}(),t.View=function(){function e(e,n,s){var r,h,u,o,l,a,d,c,f,p;for(this.els=e,this.models=n,this.options=null!=s?s:{},this.update=i(this.update,this),this.publish=i(this.publish,this),this.sync=i(this.sync,this),this.unbind=i(this.unbind,this),this.bind=i(this.bind,this),this.select=i(this.select,this),this.build=i(this.build,this),this.bindingRegExp=i(this.bindingRegExp,this),this.els.jquery||this.els instanceof Array||(this.els=[this.els]),d=["config","binders","formatters"],l=0,a=d.length;a>l;l++){if(h=d[l],this[h]={},this.options[h]){c=this.options[h];for(r in c)u=c[r],this[h][r]=u}f=t[h];for(r in f)u=f[r],null==(p=(o=this[h])[r])&&(o[r]=u)}this.build()}return e.prototype.bindingRegExp=function(){var t;return t=this.config.prefix,t?RegExp("^data-"+t+"-"):/^data-/},e.prototype.build=function(){var i,e,s,r,h,u,o,l,a,d,c,f=this;for(this.bindings=[],h=[],i=this.bindingRegExp(),r=function(e){var s,r,u,o,l,a,d,c,p,b,v,g,y,m,w,x,E,k,j,L,N,U,V,Q,R,B,F,O;if(0>n.call(h,e)){for(R=e.attributes,j=0,U=R.length;U>j;j++)if(s=R[j],i.test(s.name)){if(E=s.name.replace(i,""),!(u=f.binders[E])){B=f.binders;for(d in B)k=B[d],"*"!==d&&-1!==d.indexOf("*")&&(w=RegExp("^"+d.replace("*",".+")+"$"),w.test(E)&&(u=k))}if(u||(u=f.binders["*"]),u.block){for(F=e.getElementsByTagName("*"),L=0,V=F.length;V>L;L++)b=F[L],h.push(b);r=[s]}}for(O=r||e.attributes,N=0,Q=O.length;Q>N;N++)s=O[N],i.test(s.name)&&(v={},E=s.name.replace(i,""),m=function(){var t,i,e,n;for(e=s.value.split("|"),n=[],t=0,i=e.length;i>t;t++)y=e[t],n.push(y.trim());return n}(),o=function(){var t,i,e,n;for(e=m.shift().split("<"),n=[],t=0,i=e.length;i>t;t++)l=e[t],n.push(l.trim());return n}(),g=o.shift(),x=g.split(/\.|:/),v.formatters=m,v.bypass=-1!==g.indexOf(":"),x[0]?c=x.shift():(c=null,x.shift()),p=x.join("."),null!=f.models[c]&&((a=o.shift())&&(v.dependencies=a.split(/\s+/)),f.bindings.push(new t.Binding(f,e,E,c,p,v))));r&&(r=null)}},d=this.els,u=0,l=d.length;l>u;u++)for(e=d[u],r(e),c=e.getElementsByTagName("*"),o=0,a=c.length;a>o;o++)s=c[o],null!=s.attributes&&r(s)},e.prototype.select=function(t){var i,e,n,s,r;for(s=this.bindings,r=[],e=0,n=s.length;n>e;e++)i=s[e],t(i)&&r.push(i);return r},e.prototype.bind=function(){var t,i,e,n,s;for(n=this.bindings,s=[],i=0,e=n.length;e>i;i++)t=n[i],s.push(t.bind());return s},e.prototype.unbind=function(){var t,i,e,n,s;for(n=this.bindings,s=[],i=0,e=n.length;e>i;i++)t=n[i],s.push(t.unbind());return s},e.prototype.sync=function(){var t,i,e,n,s;for(n=this.bindings,s=[],i=0,e=n.length;e>i;i++)t=n[i],s.push(t.sync());return s},e.prototype.publish=function(){var t,i,e,n,s;for(n=this.select(function(t){return t.binder.publishes}),s=[],i=0,e=n.length;e>i;i++)t=n[i],s.push(t.publish());return s},e.prototype.update=function(t){var i,e,n,s;null==t&&(t={}),s=[];for(e in t)n=t[e],this.models[e]=n,s.push(function(){var t,n,s,r;for(s=this.select(function(t){return t.key===e}),r=[],t=0,n=s.length;n>t;t++)i=s[t],r.push(i.update());return r}.call(this));return s},e}(),t.Util={bindEvent:function(t,i,e,n){var s;return s=function(t){return e.call(n,t)},null!=window.jQuery?(t=jQuery(t),null!=t.on?t.on(i,s):t.bind(i,s)):null!=window.addEventListener?t.addEventListener(i,s,!1):(i="on"+i,t.attachEvent(i,s)),s},unbindEvent:function(t,i,e){return null!=window.jQuery?(t=jQuery(t),null!=t.off?t.off(i,e):t.unbind(i,e)):window.removeEventListener?t.removeEventListener(i,e,!1):(i="on"+i,t.detachEvent(i,e))},getInputValue:function(t){var i,e,n,s;if(null!=window.jQuery)switch(t=jQuery(t),t[0].type){case"checkbox":return t.is(":checked");default:return t.val()}else switch(t.type){case"checkbox":return t.checked;case"select-multiple":for(s=[],e=0,n=t.length;n>e;e++)i=t[e],i.selected&&s.push(i.value);return s;default:return t.value}}},t.binders={enabled:function(t,i){return t.disabled=!i},disabled:function(t,i){return t.disabled=!!i},checked:{publishes:!0,bind:function(i){return this.currentListener=t.Util.bindEvent(i,"change",this.publish)},unbind:function(i){return t.Util.unbindEvent(i,"change",this.currentListener)},routine:function(t,i){var e;return t.checked="radio"===t.type?(null!=(e=t.value)?""+e:void 0)===(null!=i?""+i:void 0):!!i}},unchecked:{publishes:!0,bind:function(i){return this.currentListener=t.Util.bindEvent(i,"change",this.publish)},unbind:function(i){return t.Util.unbindEvent(i,"change",this.currentListener)},routine:function(t,i){var e;return t.checked="radio"===t.type?(null!=(e=t.value)?""+e:void 0)!==(null!=i?""+i:void 0):!i}},show:function(t,i){return t.style.display=i?"":"none"},hide:function(t,i){return t.style.display=i?"none":""},html:function(t,i){return t.innerHTML=null!=i?i:""},value:{publishes:!0,bind:function(i){return this.currentListener=t.Util.bindEvent(i,"change",this.publish)},unbind:function(i){return t.Util.unbindEvent(i,"change",this.currentListener)},routine:function(t,i){var e,s,r,h,u,o,l;if(null!=window.jQuery){if(t=jQuery(t),(null!=i?""+i:void 0)!==(null!=(h=t.val())?""+h:void 0))return t.val(null!=i?i:"")}else if("select-multiple"===t.type){if(null!=i){for(l=[],s=0,r=t.length;r>s;s++)e=t[s],l.push(e.selected=(u=e.value,n.call(i,u)>=0));return l}}else if((null!=i?""+i:void 0)!==(null!=(o=t.value)?""+o:void 0))return t.value=null!=i?i:""}},text:function(t,i){return null!=t.innerText?t.innerText=null!=i?i:"":t.textContent=null!=i?i:""},"on-*":{"function":!0,routine:function(i,e){return this.currentListener&&t.Util.unbindEvent(i,this.args[0],this.currentListener),this.currentListener=t.Util.bindEvent(i,this.args[0],e,this.model)}},"each-*":{block:!0,bind:function(t){return t.removeAttribute(["data",this.view.config.prefix,this.type].join("-").replace("--","-"))},unbind:function(){var t,i,e,n,s;if(null!=this.iterated){for(n=this.iterated,s=[],i=0,e=n.length;e>i;i++)t=n[i],s.push(t.unbind());return s}},routine:function(i,e){var n,s,r,h,u,o,l,a,d,c,f,p,b,v,g,y,m,w,x;if(null!=this.iterated)for(g=this.iterated,d=0,p=g.length;p>d;d++)for(a=g[d],a.unbind(),y=a.els,c=0,b=y.length;b>c;c++)s=y[c],s.parentNode.removeChild(s);else this.marker=document.createComment(" rivets: "+this.type+" "),i.parentNode.insertBefore(this.marker,i),i.parentNode.removeChild(i);if(this.iterated=[],e){for(x=[],f=0,v=e.length;v>f;f++){r=e[f],n={},m=this.view.models;for(o in m)u=m[o],n[o]=u;n[this.args[0]]=r,h=i.cloneNode(!0),l=this.iterated.length?this.iterated[this.iterated.length-1].els[0]:this.marker,this.marker.parentNode.insertBefore(h,null!=(w=l.nextSibling)?w:null),a=new t.View(h,n,this.view.options),a.bind(),x.push(this.iterated.push(a))}return x}}},"class-*":function(t,i){var e;return e=" "+t.className+" ",!i==(-1!==e.indexOf(" "+this.args[0]+" "))?t.className=i?""+t.className+" "+this.args[0]:e.replace(" "+this.args[0]+" "," ").trim():void 0},"*":function(t,i){return i?t.setAttribute(this.type,i):t.removeAttribute(this.type)}},t.config={preloadData:!0},t.formatters={},t.factory=function(i){return i.binders=t.binders,i.formatters=t.formatters,i.config=t.config,i.configure=function(i){var e,n;null==i&&(i={});for(e in i)n=i[e],t.config[e]=n},i.bind=function(i,e,n){var s;return null==e&&(e={}),null==n&&(n={}),s=new t.View(i,e,n),s.bind(),s}},"object"==typeof exports?t.factory(exports):"function"==typeof define&&define.amd?define(["exports"],function(i){return t.factory(this.rivets=i),i}):t.factory(this.rivets={})}).call(this); | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | { | 1 | { |
2 | "name": "rivets", | 2 | "name": "rivets", |
3 | "description": "Declarative data binding facility.", | 3 | "description": "Declarative data binding facility.", |
4 | "version": "0.5.0", | 4 | "version": "0.5.1", |
5 | "author": "Michael Richards", | 5 | "author": "Michael Richards", |
6 | "url": "http://rivetsjs.com", | 6 | "url": "http://rivetsjs.com", |
7 | "main": "./dist/rivets.js", | 7 | "main": "./dist/rivets.js", | ... | ... |
-
Please register or sign in to post a comment