<ahref="labs/architecture-examples/o_O/"data-source="http://weepy.github.com/o_O/"data-content="o_O: HTML binding for teh lulz: <br> - Elegantly binds objects to HTML<br>- Proxies through jQuery, Ender, etc<br>- Automatic dependency resolution<br>- Plays well with others">Funnyface.js</a>
<ahref="labs/architecture-examples/o_O/"data-source="http://weepy.github.com/o_O/"data-content="o_O: HTML binding for teh lulz: <br> - Elegantly binds objects to HTML<br>- Proxies through jQuery, Ender, etc<br>- Automatic dependency resolution<br>- Plays well with others">Funnyface.js</a>
</li>
</li>
<li>
<ahref="labs/architecture-examples/fun/"data-source="https://github.com/marcuswestin/fun"data-content="Fun is not an MVC framework, but a programming language meant to tackle MVC/UI programming on a deeper, more fundamental level - part reactive/functional and part sequential/procedural.">Fun</a>
</li>
<li>
<li>
<ahref="labs/dependency-examples/knockoutjs_require/"data-source="http://knockoutjs.com"data-content="This project is an adaptation of /architecture-examples/knockoutjs with require.js.">Knockout + RequireJS</a>
<ahref="labs/dependency-examples/knockoutjs_require/"data-source="http://knockoutjs.com"data-content="This project is an adaptation of /architecture-examples/knockoutjs with require.js.">Knockout + RequireJS</a>
returnNullValue// This is a bit ghetto - allows template invocations to render nothing. I'm thinking more and more that template invocations may want their own syntax (<templateNamefoo=foo,bar=bar,gee=gee></templateName>)
||(this.isSkyfire=this._isBrowser('Skyfire','Skyfire'))// Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Safari/530.17 Skyfire/2.0
if(this._userAgent.match('Opera Mini')){this.isOperaMini=true}// Opera mini is a cloud browser - Opera/9.80 (Android 2.3.4; Linux; Opera Mobi/ADR-1110171336; U; en) Presto/2.9.201 Version/11.50
if(this.isOpera&&this._userAgent.match('Opera Mobi')){this.isMobile=true}// Opera mobile is a proper mobile browser - Opera/9.80 (Android; Opera Mini/6.5.26571/ 26.1069; U; en) Presto/2.8.119 Version/10.54
if(this.isFirefox){this.isMobile=true}// Firefox Android browsers do not seem to have an indication that it's a phone vs a tablet: Mozilla/5.0 (Android; Linux armv7l; rv:7.0.1) Gecko/20110928 Firefox/7.0.1 Fennec/7.0.1
}
this.isTablet=this.isIPad
}
this.isQuirksMode=function(doc){
// in IE, if compatMode is undefined (early ie) or explicitly set to BackCompat, we're in quirks
fun.hook(_XML_HOOK_7,_XML_HOOK_5,{tagName:"input",attrs:[{name:"id",value:fun.expressions.Text("new-todo")},{name:"placeholder",value:fun.expressions.Text("What needs to be done?")},{name:"autofocus",value:fun.expressions.Logic(true)},{name:"data",value:__variableName__newTaskName},{name:"onkeypress",value:
This is an implementation of the [TodoMVC example application](http://addyosmani.github.com/todomvc/) in [Fun](https://github.com/marcuswestin/fun), a new programming language for web apps.
Note that `index.html` is the compiled output - see `app.fun` for the original source.
Getting started
---------------
To make changes to the todos-fun example you need to install fun:
sudo npm install fun@0.2.22 -g
fun app.fun --normalize.css=false
To compile, run
fun --compile app.fun --normalize.css=false > index.html