From 68c56e3db706d817a94e61a19a47df0ecca8f478 Mon Sep 17 00:00:00 2001 From: Borys Levytskyi Date: Thu, 23 Apr 2015 21:26:23 +0300 Subject: [PATCH] Publish4 --- css/styles.css | 2 +- img/feedback-dark.png | Bin 0 -> 1108 bytes img/feedback-light.png | Bin 0 -> 1108 bytes img/github-dark.png | Bin 0 -> 470 bytes img/github-light.png | Bin 0 -> 605 bytes img/twitter-dark.png | Bin 0 -> 1108 bytes img/twitter-light.png | Bin 0 -> 1108 bytes index.html | 21 ++++++++++++++------- js/bitwisecmd.js | 2 +- 9 files changed, 16 insertions(+), 9 deletions(-) create mode 100644 img/feedback-dark.png create mode 100644 img/feedback-light.png create mode 100644 img/github-dark.png create mode 100644 img/github-light.png create mode 100644 img/twitter-dark.png create mode 100644 img/twitter-light.png diff --git a/css/styles.css b/css/styles.css index 9b9fe70..74c9953 100644 --- a/css/styles.css +++ b/css/styles.css @@ -1 +1 @@ -body{font-family:Verdana;font-size:.8em;padding:20px 100px 0 100px;margin:0}.expression,.indicator,.mono{font-family:monospace}code{font-size:1.2em;font-weight:700}.links{float:right;position:absolute;right:10px;top:10px}.mono{font-size:1.3em}.expressionInput{width:500px;padding:3px;border:solid 1px #d3d3d3}.result{margin:10px 10px 30px}.result .input{margin-bottom:10px}.result .content{padding-left:10px}.result .cur{color:#d3d3d3;margin-right:5px}.hashLink{text-decoration:none;margin-left:5px;visibility:hidden}.hashLink:hover{text-decoration:underline;margin-left:5px}.input:hover .hashLink{visibility:visible}.expression .label{font-weight:700;padding-right:5px;text-align:right}.expression .bin{letter-spacing:3px}.expression .byte{margin:0 3px}.expression-result td{border-top:dotted 1px gray}.expression{font-size:1.5em}.expression .prefix{font-weight:400;display:none;font-size:.9em}.expression .other{font-size:.9em}.hex .prefix{display:inline}.help{padding:10px}.help ul{list-style-type:none;margin:0;padding:0}.help p{margin-top:0}.indicator{padding:2px 5px;font-size:1.3em;background:0 0;border:none;cursor:pointer}.error{color:maroon}#view{padding:10px}.light{background:#fafafa}.light a,.light a:visited{color:#222}.light .one{color:#000}.light .zero{color:#888}.light .indicator{color:#ddd}.light .on{color:#121212}.light .prefix{color:#888}.light .other{color:#bbb}.light .hashLink,.light .hashLink:visited{color:#ddd}.light .hashLink:hover{color:#888}.dark,.dark .expressionInput{background:#121212;color:#fff}.dark a,.dark a:visited{color:#fff}.dark .indicator{color:#555}.dark .on{color:#fff}.dark .prefix,.dark .zero{color:#999}.dark .other{color:#444}.dark .hashLink,.dark .hashLink:visited{color:#333}.dark .hashLink:hover{color:#999} \ No newline at end of file +.help ul,ul.links{list-style-type:none}body{font-family:Verdana;font-size:.8em;padding:20px 100px 0 100px;margin:0}.expression,.indicator,.mono{font-family:monospace}code{font-size:1.2em;font-weight:700}ul.links{position:absolute;right:10px;top:10px;margin:0}ul.links li{float:left;padding-left:10px}.links a{display:inline-block;padding:10px 10px 10px 0}.links .icon{margin-right:5px}.mono{font-size:1.3em}.expressionInput{width:500px;padding:3px;border:solid 1px #d3d3d3}.result{margin:10px 10px 30px}.result .input{margin-bottom:10px}.result .content{padding-left:10px}.result .cur{margin-right:5px}.hashLink{text-decoration:none;margin-left:5px;visibility:hidden}.hashLink:hover{text-decoration:underline;margin-left:5px}.input:hover .hashLink{visibility:visible}.expression .label{font-weight:700;padding-right:5px;text-align:right}.expression .bin{letter-spacing:3px}.expression .byte{margin:0 3px}.expression-result td{border-top:dotted 1px gray}.expression{font-size:1.5em}.expression .prefix{font-weight:400;display:none;font-size:.9em}.expression .other{font-size:.9em}.hex .prefix{display:inline}.help{padding:10px}.help ul{margin:0;padding:0}.help p{margin-top:0}.indicator{padding:2px 5px;font-size:1.3em;background:0 0;border:none;cursor:pointer}.error{color:maroon}#view{padding:10px}.cur{color:#d3d3d3}.icon{width:16px;height:16px;display:inline-block}.light .twitter{background:url(../img/twitter-light.png)}.dark .twitter{background:url(../img/twitter-dark.png)}.light .feedback{background:url(../img/feedback-light.png)}.dark .feedback{background:url(../img/feedback-dark.png)}.dark .github{background:url(../img/github-dark.png)}.light .github{background:url(../img/github-light.png)}.light{background:#fafafa}.light a,.light a:visited{color:#222}.light .one{color:#000}.light .zero{color:#888}.light .indicator{color:#ddd}.light .on{color:#121212}.light .prefix{color:#888}.light .other{color:#bbb}.light .hashLink,.light .hashLink:visited{color:#ddd}.light .hashLink:hover{color:#888}.light ul.links li:hover{background:#ddd}.dark,.dark .expressionInput{background:#121212;color:#fff}.dark a,.dark a:visited{color:#fff}.dark .indicator{color:#555}.dark .on{color:#fff}.dark .prefix,.dark .zero{color:#999}.dark .other{color:#444}.dark .hashLink,.dark .hashLink:visited{color:#333}.dark .hashLink:hover{color:#999}.dark ul.links li:hover{background:#333} \ No newline at end of file diff --git a/img/feedback-dark.png b/img/feedback-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..c693b65b7bcab34a92c9886b081ed1a5614b264c GIT binary patch literal 1108 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKV3GE8aSX8#WE5a|{~IVe7{Je; zKl}gu`E!#L4Aip{?Dii&e)xR*_KoZB-@p6+6A6H7FMs*+MGR<&4a2{G|Na6QNk9RR zA$tj#0aSDG^XJbZzkdC40qXtA0MY<6 zZjcxthBfw~045Rm4tU%v{$oDEV711JW71Yw2%y~6?2xE+X3rGNHP|r%R+XVy!d?Y0$xmZ|O_5%g}6N8zVnJNxtf&v%N8#oOCYCeyq8Kf8PY>*)-N=ix~ zLv|yHgS~}AGl~H)mtYtI(hT&o5R$XOhC(fYy8tE#a|s8~CEJ0TPvg;y;Q|yxjE#+% z%*@PKaM%n}i{S#81jr>Bz^L+qhBizboyKVZx>ApYG7 U*&lb8a)4an>FVdQ&MBb@0P&2tsQ>@~ literal 0 HcmV?d00001 diff --git a/img/github-dark.png b/img/github-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..07ecd24763f7c65802598086ab0743c407b615d6 GIT binary patch literal 470 zcmV;{0V)28P)TOS_S*Yj=ZB_HC)AR9u0F>(SJ%|> zW`4S{Q(adZ>XBMdm*Nxxds8cF$4|`%>Z3aM$B?<;?0*qaH=;18cKx&EP;kot8Fd0U z0TzJ^;1bvZwt)el4Y&m+ffZm1=mn}ko-pSqCXD!hOa`~67PG)?r~yp>>hfpIM6Lp} zS)dQN3UIjvfrN7n^k)HqOn^Nt2y{oz0A_)EAQ#|i3j$}6bHH6R%xk+eDEvjc>Xg$7HKkl50cT3U8&P_aB7XSbN M07*qoM6N<$g6Dg>-2eap literal 0 HcmV?d00001 diff --git a/img/github-light.png b/img/github-light.png new file mode 100644 index 0000000000000000000000000000000000000000..8df17f1cc321a1b65b1323d3d223376b784aa8d1 GIT binary patch literal 605 zcmV-j0;2tiP)598NV$C6v<{>7YClbH0Wfs~5y$a{WIq2taRqJdrzA-(0Wbmp zx>2+$g;>&Bua^f0HwJ0C#X_89qFv`);(%bc-@jdsMt7z>@3a(RVcPdk75n?Ipp=@Q z?e*Mjuje|Q&g1cr0KiObXi%l?bUKeKzEWzQeJNLtqG|nXT zI2Vp<#}4=j0D`C;$MLmE>M#tK1ak|AlYg-QHmq~l>GzG*`ehUZ7yl)Wl)4~=cv@?{ z<5KHKqw)aGIg<^C!@MXyFms`lny*;C?_Xi&-Kj?7qhLN!^{urJInVPip6@-G?e(TY zDHof~=CTTc&&<42GuUgjTHSgYZSDOuO}`%fg*b}d6Z2VP?Kx}hFwgU>##h}q-WJR= z0AP%H-5(6DAKvH~Nt!N#XiYGG_oV!W>Uj^*ti)RDyOkIKL_Jnf6mO;*jeQVxJ>DjYqEa;NYpFd~%^XJdjfB*jd{q^hD;?JKy^P#H& z^MC*TUGVqs-^W13bzi=G5rHWJil_ZY0w6U%fBsa1$-`-&Gx>m;FM`wpZTk$=SoQMd zOE#c}`$+o1OrY3dxJDQQXe%GcbY#Uq{$*r7j19ElKhPB^-@ktkfawR*KmiA!rq3{i z_-LTI*T8_SK`{X2H=x8ppbbCqX$H9f7@#R%zkZcKF#yB?#)cG7!Eby904+g;!J9X4 zWYA3kx@0;o1AvBq2g)14^?*3Q5MK_Afkq&11)6>u4 zfeQZO(D)lDzZMv1nDGxY1Vn>UBhWP&K*bY*crFlk1Nm`S0}EN>fU?(HA2)c)I;|Vz N2v1i(mvv4FO#q_j*AxH% literal 0 HcmV?d00001 diff --git a/img/twitter-light.png b/img/twitter-light.png new file mode 100644 index 0000000000000000000000000000000000000000..ee35e405f7a35f2da73ef190f3a49db989cc0c37 GIT binary patch literal 1108 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKV3GE8aSX8#WE5a|{~IVe6o7() z0+*1GP=u(cs9$VsEE85Yi;IgZSy))Gpi5d=SuwG)vTkK$Wc%>0<0oxM&%LP7+lh?A2u4aoiv!%R#}kNNre)nM{)T3K0{4`|axkV2qspMeHe znV6Wc0S&zm(+s0oSXd6jHNqIu($ah&7r+#OXrO_Yk@?7M9v+?)K|#R)pcn!G1ss5e zd - - @@ -18,10 +16,17 @@

BitwiseCmd

-
+
@@ -84,7 +89,7 @@ @@ -181,5 +186,7 @@ } + + \ No newline at end of file diff --git a/js/bitwisecmd.js b/js/bitwisecmd.js index e62046d..6253183 100644 --- a/js/bitwisecmd.js +++ b/js/bitwisecmd.js @@ -1,2 +1,2 @@ -/*! BitwiseCmd 2015-04-15 */ +/*! BitwiseCmd 2015-04-23 */ "use strict";window.core={},function(){window.core.is={plainObject:function(a){return"object"==typeof a&&a instanceof Object},aFunction:function(a){return"function"==typeof a},string:function(a){return"string"==typeof a},regex:function(a){return"object"==typeof a&&this.constructedFrom(RegExp)},constructedFrom:function(a,b){return a instanceof b},htmlElement:function(a){return a instanceof HtmlElement},array:function(a){return a instanceof Array},number:function(a){return"number"==typeof a&&!isNaN(a)}}}(),function(){function a(a,b){return"string"==typeof a?a+" "+b:b}var b=window.core.is;window.core.should={beNumber:function(c,d){this.check(b.number(c),c+" is not a number"),this.check(isFinite(c),a(d,"is an infinite number"))},bePositiveInteger:function(b,c){this.beNumber(b),this.check(b>=0,a(c,"should be positive integer"))},notBeNull:function(b,c){this.check(null!=b,a(c,"is null or undefined"))},beString:function(a,b){this.check("string"==typeof a,"should be a string")},check:function(a,b){if(a!==!0)throw new Error(b)}}}(),function(a){function b(a){this.store=a||{},this.resolutionStack=[]}function c(a){if(e(this.resolutionStack,a))throw new Error("Failed to resolve service: "+a+". Circular reference: "+this.resolutionStack.join(" < "));this.resolutionStack.unshift(a);var b=this.store[a];if(null==b)throw new Error(a+" component is not registered");return null==b.resolved&&b.createInstance(),this.resolutionStack.shift(),b.resolved}function d(a){this.def=a,this.resolved=null}function e(a,b){for(var c=a.length;c-->0;)if(a[c]===b)return!0;return!1}var f=a.is;b.prototype.register=function(a,b){var c;return null!=this.store[a]&&console.warn("Previous registration for [%1] has been replaced",a),c=b instanceof d?b:new d(b),c.name=a,this.store[a]=c,c},b.prototype.resolve=function(a){return c.call(this,a)},b.prototype.clone=function(){var a={};for(var c in this.store)a[c]=this.store[c];return new b(a)},d.prototype.createInstance=function(){var a=this.def;this.resolved="function"==typeof a?a():a,f.aFunction(this.onFirstTimeResolve)&&this.onFirstTimeResolve(this.resolved)},b.Registration=d,a.Container=b}(window.core),function(){function a(a){this.models={},this.di=a,this.runList=[],this.compositionList=[]}function b(a){a.forEach(function(a){a()})}a.prototype.get=function(a){return this.di.resolve(a)},a.prototype.set=function(a,b){this.di.register(a,b)},a.prototype.run=function(a){this.runList.push(a)},a.prototype.compose=function(a){this.compositionList.push(a)},a.prototype.initialize=function(){b(this.compositionList),b(this.runList)},window.core.AppShell=a}(),function(core){function normalize(a){return a.replace(/(\r|\n)+/g,"").replace("'","\\'")}function replaceToken(a,b){if(0==a.indexOf("each")){var c=/([\w\.]+)\sin\s([\w\.]+)/g,d=c.exec(a),e=d[1],f=d[2];return"var "+e+"_list = "+f+".slice(), "+e+";\r\nwhile(("+e+"="+e+"_list.splice(0,1)[0])!==undefined)\r\n{"}return"/"==a?"}":" html.push("+a+");"}var html={},should=core.should;html.element=function(a,b){var c=document.createElement("div");return c.innerHTML=html.template(a,b),c.children[0]},html.template=function(a,b){should.beString(a,"template");var c,d=/(?:{([^}]+)})/g;return c=null==b?a:a.replace(d,function(a,c){return html.escapeHtml(b[c])})},html.compileTemplate=function(template){var regex=/(?:{([^}]+)})/g,sb=[];sb.push("(function() {"),sb.push("return function (m) { "),sb.push(" var html = [];");for(var m,index=0;null!==(m=regex.exec(template));)m.index>index&&sb.push(" html.push('"+normalize(template.substr(index,m.index-index))+"');"),sb.push(replaceToken(m[1])),index=m.index+m[0].length;return index/g,">").replace(/"/g,""").replace(/'/g,"'"))},core.html=html}(window.core),function(a){function b(){this.$store={},this.$executionHandlers=[]}var c=a.is;b.create=function(a){var c=new b;for(var d in a)a.hasOwnProperty(d)&&(Object.defineProperty(c,d,{get:b.createGetter(d),set:b.createSetter(d)}),c[d]=a[d]);return Object.seal(c)},b.createGetter=function(a,b){return function(){return this.$store[a]}},b.createSetter=function(a,b){return function(b){this.$store[a]=b,this.notifyPropertyChanged(a,b)}},b.prototype.observe=function(a,b){var d;if(c.aFunction(a))d=a;else{if(!c.string(a)||!c.aFunction(b))return void console.warn("Unsupported set of arguments: ",arguments);d=function(c,d){c===a&&b(d)}}var e=this.$executionHandlers,f=e.push(d);return function(){e.splice(1,f)}},b.prototype.notifyPropertyChanged=function(a,b){this.$executionHandlers.forEach(function(c){c(a,b)})},b.prototype.store=function(){return this.$store},b.prototype.keys=function(){return Object.keys(this.$store)},a.ObservableObject=b}(window.core),function(a){var b=new a.Container,c=new a.AppShell(b);c.set("cmdConfig",a.ObservableObject.create({emphasizeBytes:!0,theme:"dark"})),c.debugMode=!1,c.bootstrap=function(a){this.rootViewElement=a,this.set("rootView",a),this.initialize()},window.app=c}(window.core),function(a,b){function c(a){a.attachView=function(b){this.viewElement=b,"function"==typeof a.onViewAttached&&a.onViewAttached(b)},a.detachView=function(){this.viewElement=null,"function"==typeof a.onViewDetached&&a.onViewDetached(viewElement)}}function d(b){for(var c,d,e,f=b.querySelectorAll("[data-controller]"),g=0,h=f.length;h>g;g++)e=f[g],c=e.getAttribute("data-controller"),d=a.controller(c),null!=d?(d.attachView(e),"function"==typeof d.detachView&&e.addEventListener("DOMNodeRemoved",function(a){e===a.target&&d.detachView()})):console.warn(c+" controller wasn't found")}var e=b.should;a.controller=function(a,d){if(e.beString(a,"name"),null==d)return this.get(a);var f=new b.Container.Registration(d);f.onFirstTimeResolve=function(a){c(a)},this.set(a,f)},a.run(function(){d(a.get("rootView"),a.di)})}(window.app,window.core),function(a){function b(a,b){this.html=a,this.isCompiled=b===!0}function c(c){var d=c.querySelectorAll("[data-template]"),e=a.templates;Array.prototype.forEach.call(d,function(c){var d=c.getAttribute("data-template");if(e[d]instanceof b)return void console.warn(d+" templates already registered");var f=new b(c.innerHTML);e[d]=f,c.hasAttribute("data-compiled")&&(f.process=a.get("html").compileTemplate(f.html),f.isCompiled=!0)})}b.prototype.render=function(b){return this.isCompiled?a.get("html").element(this.process(b)):a.get("html").element(this.html,b)},a.templates=[],a.template=function(a){var b=this.templates[a];if(null==b)throw new Error(a+" template is not found");return b},a.run(function(){c(a.get("rootView"))})}(window.app),function(a,b){function c(a){return d(a)+"ViewBuilder"}function d(a){var b=a.toString();return b.substr(8,b.indexOf("(")-8).trim()}a.modelView=function(b,d){var e=c(b);a.di.register(e,d)},a.buildViewFor=function(a){var b=c(a.constructor),d=this.di.resolve(b);return d.renderView(a)}}(window.app,window.is),app.set("calc",function(){var should=app.get("should");return{numberOfBits:function(a){return 0>a?32:(should.bePositiveInteger(a),Math.floor(Math.log(a)/Math.log(2))+1)},maxNumberOfBits:function(a){for(var b,c=[],d=0;d0&&b.push(new f(a.trim()))}),new app.models.BitwiseNumbers(b)}function d(a){switch(a){case"bin":return 2;case"hex":return 16;case"dec":return 10}}function e(a){return 0==a.indexOf("-")?"-0x"+a.substr(1):"0x"+a}function f(a){this.input=a,this.value=parseInt(a),this.hex=e(this.value.toString(16)),this.dec=this.value.toString(10),this.bin=(this.value>>>0).toString(2),this.kind=this.input.indexOf("0x")>-1?"hex":"dec",this.other="dec"==this.kind?this.hex:this.dec}var g=/^(-?(?:\d+|0x[\d,a-f]+))\s*(<<|>>|>>>|\||\&|\^)\s*(-?(?:\d+|0x[\d,a-f]+))$/,h=/^(-?(?:\d+|0x[\d,a-f]+)\s?)+$/,i=/^(~)(-?(?:\d+|0x[\d,a-f]+))$/;return{canParse:function(a){return g.test(a)||h.test(a)||i.test(a)},parse:function(d){var e=d.replace(/^\s+|\s+$/,""),f=g.exec(e);return null!=f?a(f):(f=i.exec(e),null!=f?b(f):(f=h.exec(d),null!=f?c(d):void 0))},parseOperand:function(a){return new f(a)},createOperand:function(a,b){var c=a.toString(d(b));return"hex"==b&&(c=e(c)),new f(c)}}}),app.set("formatter",function(){function a(a){switch(a){case"bin":return 2;case"hex":return 16;case"dec":return 10}}app.get("should"),app.get("is");return{formatString:function(b,c){c=c||"bin";var d=b.toString(a(c));return d},padLeft:function(a,b,c){var d=Array.prototype.slice.call(a),c=c||"0";if(null==b)return a;for(;b>d.length;)d.unshift(c);return d.join("")}}}),app.set("cmd",function(){function a(a,b){var c=new app.models.ErrorResult(b);g.display(new app.models.DisplayResult(a,c))}function b(a,b){var c=b.handle(a);if(null!=c){var d=new app.models.DisplayResult(a,c);g.display(d)}}function c(a,b){return f.plainObject(a)?a:f.string(a)?{canHandle:function(b){return b===a},handle:b}:null}function d(a){var b=0;for(b;bb.historyIndex&&(a.target.value=b.history[b.historyIndex++]),void a.preventDefault()):void(40==a.keyCode&&(b.historyIndex>0&&(a.target.value=b.history[--b.historyIndex]),a.preventDefault()))})}}}),app.controller("cmdController",function(){app.get("html"),app.get("rootView");return{clear:function(){this.viewElement.innerHTML=""},display:function(a){var b=app.buildViewFor(a),c=this.viewElement;0==c.childNodes.length?c.appendChild(b):c.insertBefore(b,c.childNodes[0])}}}),app.controller("configPanelCtrl",{onViewAttached:function(){var a=this,b=app.get("cmdConfig");a.update(b),b.observe(function(){a.update(b)})},update:function(a){var b=this.viewElement.querySelector("#emphasizeBytes");a.emphasizeBytes?b.classList.add("on"):b.classList.remove("on")}}),app.compose(function(){function a(a){var b=e.maxNumberOfBits(a);if(g.emphasizeBytes&&b%8!=0){if(8>b)return 8;var c=b-b%8;return c+8}return b}function b(a){var b=a.querySelectorAll(".bin");return Array.prototype.forEach.call(b,function(a){var b=a.textContent;a.innerHTML=b.replace(/(\d{8})/g,'$1').replace(/0/g,'0').replace(/1/g,'1')}),a}function c(a){for(var b=0;b>":case">>>":return"shiftExpressionView";case"~":return"notExpressionView";default:return"binaryExpressionView"}}return{renderView:function(f){var g=h.createOperand(e.calcExpression(f),c([f.operand1,f.operand2])),i=a([f.operand1.value,null!=f.operand2?f.operand2.value:0,g.value]),j=Object.create(f);j.bitsSize=i,j.result=g;var k=d(j),l=app.template(k);return b(l.render(j))}}}),app.modelView(app.models.BitwiseNumbers,{renderView:function(c){return c.bitsSize=a(c.numbers),b(app.template("numbersList").render(c))}}),app.modelView(app.models.ViewResult,{renderView:function(a){var b=app.template(a.template);return b.render()}}),app.modelView(app.models.ErrorResult,{renderView:function(a){return f.element('
{message}
',a)}}),app.modelView(app.models.DisplayResult,{renderView:function(a){var b=app.template("resultView").render(a),c=app.buildViewFor(a.content);return b.querySelector(".content").appendChild(c),b}})}),function(app){function BitwiseOperation(){}function BitwiseNumbers(a){this.operands=a;var b=this.numbers=[];a.forEach(function(a){b.push(a.value)})}function ErrorResult(a){this.message=a}function ViewResult(a){this.template=a}function DisplayResult(a,b){this.input=a,this.inputHash=app.get("hash").encodeHash(a),this.content=b}BitwiseOperation.prototype.calculate=function(){return eval(this.string)},app.models.BitwiseOperation=BitwiseOperation,app.models.BitwiseNumbers=BitwiseNumbers,app.models.ErrorResult=ErrorResult,app.models.ViewResult=ViewResult,app.models.DisplayResult=DisplayResult}(window.app),app.run(function(){var a=app.get("rootView"),b=app.get("cmdConfig");b.observe("theme",function(b){var c="dark"==b?"light":"dark";a.classList.contains(b)||(a.classList.remove(c),a.classList.add(b))})}),app.run(function(){function a(){localStorage.setItem(d,JSON.stringify(c.store()))}function b(){var a,b=localStorage.getItem(d);if(core.is.string(b)){a=JSON.parse(b);for(var e in a)c[e]=a[e]}}var c=app.get("cmdConfig"),d="cmdConfig";b(),c.observe(function(b,c){a()})}),app.run(function(){var a=app.get("rootView").querySelectorAll("[data-cmd]");Array.prototype.forEach.call(a,function(a){a.addEventListener("click",function(a){app.get("cmd").execute(a.target.getAttribute("data-cmd"))})})}),function(a,b){a.set("html",b.html),a.set("is",b.is),a.set("should",b.should),a.set("bindr",b.bindr),a.set("hash",function(){function a(a){var b=[];return a.indexOf("||")?a.split("||").forEach(function(a){a.length>0&&b.push(a)}):b.push(a),b}return{encodeHash:function(a){return encodeURI(a.trim().replace(/\s/g,","))},decodeHash:function(a){return decodeURI(a).replace(/^\#/,"").replace(/,/g," ")},getArgs:function(c){b.should.beString(c,"hashValue");var d=this.decodeHash(c),e={commands:[]};return a(d).forEach(function(a){return/^\-[a-zA-Z]+$/.test(a)?void(e[a.substr(1)]=!0):void e.commands.push(a)}),Object.freeze(e)}}}),a.set("hashArgs",function(){return a.get("hash").getArgs(window.location.hash)})}(window.app,window.core); \ No newline at end of file