├── .gitignore ├── vendor ├── DocumentUp │ ├── CNAME │ ├── .gitignore │ ├── index.html │ ├── .bower.json │ ├── package.json │ ├── vendor │ │ └── javascript │ │ │ └── languages │ │ │ ├── ini.js │ │ │ ├── dos.js │ │ │ ├── smalltalk.js │ │ │ ├── diff.js │ │ │ ├── bash.js │ │ │ ├── javascript.js │ │ │ ├── java.js │ │ │ ├── erlang-repl.js │ │ │ ├── go.js │ │ │ ├── cs.js │ │ │ ├── php.js │ │ │ ├── scala.js │ │ │ ├── python.js │ │ │ ├── haskell.js │ │ │ ├── cmake.js │ │ │ ├── coffee.js │ │ │ ├── cpp.js │ │ │ ├── lua.js │ │ │ ├── lisp.js │ │ │ ├── xml.js │ │ │ ├── django.js │ │ │ ├── css.js │ │ │ ├── objectivec.js │ │ │ ├── sql.js │ │ │ └── erlang.js │ ├── src │ │ └── stylesheets │ │ │ ├── normalize.styl │ │ │ └── github.styl │ ├── scripts │ │ └── package │ └── README.md ├── jquery │ ├── .gitignore │ ├── package.json │ ├── bower.json │ ├── component.json │ ├── README.md │ ├── .bower.json │ └── composer.json ├── backbone │ ├── CNAME │ ├── index.js │ ├── .gitignore │ ├── .npmignore │ ├── .travis.yml │ ├── docs │ │ ├── images │ │ │ ├── do.png │ │ │ ├── airbnb.png │ │ │ ├── arrows.png │ │ │ ├── artsy.png │ │ │ ├── disqus.png │ │ │ ├── easel.png │ │ │ ├── flow.png │ │ │ ├── gawker.png │ │ │ ├── gilt.jpg │ │ │ ├── hulu.png │ │ │ ├── lens.png │ │ │ ├── quartz.jpg │ │ │ ├── rdio.png │ │ │ ├── salon.png │ │ │ ├── spin.png │ │ │ ├── stripe.png │ │ │ ├── todos.png │ │ │ ├── trello.png │ │ │ ├── tzigla.png │ │ │ ├── zocdoc.jpg │ │ │ ├── backbone.png │ │ │ ├── baroque.jpg │ │ │ ├── blossom.png │ │ │ ├── cloudapp.png │ │ │ ├── diaspora.png │ │ │ ├── favicon.ico │ │ │ ├── groupon.png │ │ │ ├── inkling.png │ │ │ ├── irccloud.png │ │ │ ├── newsblur.jpg │ │ │ ├── pandora.png │ │ │ ├── seatgeek.png │ │ │ ├── syllabus.jpg │ │ │ ├── tilemill.png │ │ │ ├── background.png │ │ │ ├── bitbucket.png │ │ │ ├── code-school.png │ │ │ ├── foursquare.png │ │ │ ├── jolicloud.jpg │ │ │ ├── pitchfork.png │ │ │ ├── soundcloud.png │ │ │ ├── usa-today.png │ │ │ ├── dc-workspace.png │ │ │ ├── khan-academy.png │ │ │ ├── menagerievet.png │ │ │ ├── backbone-mobile.png │ │ │ ├── walmart-mobile.png │ │ │ ├── basecamp-calendar.jpg │ │ │ ├── slavery-footprint.png │ │ │ └── wpcom-notifications.png │ │ ├── public │ │ │ ├── fonts │ │ │ │ ├── aller-bold.eot │ │ │ │ ├── aller-bold.ttf │ │ │ │ ├── fleurons.eot │ │ │ │ ├── fleurons.ttf │ │ │ │ ├── fleurons.woff │ │ │ │ ├── aller-bold.woff │ │ │ │ ├── aller-light.eot │ │ │ │ ├── aller-light.ttf │ │ │ │ ├── aller-light.woff │ │ │ │ ├── novecento-bold.eot │ │ │ │ ├── novecento-bold.ttf │ │ │ │ └── novecento-bold.woff │ │ │ └── images │ │ │ │ └── grey_@2X.png │ │ └── jsl.conf │ ├── examples │ │ ├── todos │ │ │ ├── destroy.png │ │ │ ├── index.html │ │ │ └── todos.css │ │ └── backbone.localStorage.js │ ├── .bower.json │ ├── test │ │ ├── noconflict.js │ │ ├── environment.js │ │ ├── index.html │ │ ├── model.coffee │ │ └── vendor │ │ │ ├── runner.js │ │ │ └── qunit.css │ ├── CONTRIBUTING.md │ ├── LICENSE │ ├── package.json │ └── README.md ├── sinon-qunit │ ├── AUTHORS │ ├── .gitmodules │ ├── test │ │ ├── fake_qunit.js │ │ ├── helper.js │ │ └── sinon-qunit-test.js │ ├── Changelog.txt │ ├── jsl.conf │ ├── Makefile │ ├── jsTestDriver.conf │ ├── .bower.json │ ├── package.json │ ├── lib │ │ └── sinon-qunit.js │ ├── build │ ├── LICENSE │ └── pkg │ │ └── sinon-qunit-1.0.0.js ├── qunit │ ├── .gitignore │ ├── .travis.yml │ ├── test │ │ ├── async.js │ │ ├── logs.html │ │ ├── swarminject.js │ │ ├── setTimeout.html │ │ ├── setTimeout.js │ │ ├── index.html │ │ ├── .jshintrc │ │ ├── node-test.js │ │ ├── narwhal-test.js │ │ ├── async.html │ │ ├── headless.html │ │ └── logs.js │ ├── .bower.json │ ├── addons │ │ ├── .jshintrc │ │ └── phantomjs │ │ │ ├── README.md │ │ │ └── runner.js │ ├── .jshintrc │ ├── CONTRIBUTING.md │ ├── MIT-LICENSE.txt │ ├── package.json │ ├── Gruntfile.js │ ├── README.md │ ├── AUTHORS.txt │ ├── .mailmap │ └── qunit │ │ └── qunit.css ├── sinonjs │ ├── bower.json │ ├── README.md │ └── .bower.json └── lodash │ ├── bower.json │ ├── .bower.json │ └── LICENSE.txt ├── .bowerrc ├── .travis.yml ├── test ├── mocha-require.js ├── speed.js ├── index.html └── vendor │ ├── sinon-qunit.js │ └── qunit.css ├── index.html ├── bower.json ├── demo ├── before.html ├── after.html └── hack.html ├── package.json ├── LICENSE ├── Gruntfile.js └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | *.swp 3 | -------------------------------------------------------------------------------- /vendor/DocumentUp/CNAME: -------------------------------------------------------------------------------- 1 | documentup.com -------------------------------------------------------------------------------- /vendor/jquery/.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | -------------------------------------------------------------------------------- /vendor/DocumentUp/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "vendor" 3 | } 4 | -------------------------------------------------------------------------------- /vendor/backbone/CNAME: -------------------------------------------------------------------------------- 1 | backbonejs.org 2 | 3 | -------------------------------------------------------------------------------- /vendor/backbone/index.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./backbone'); 2 | -------------------------------------------------------------------------------- /vendor/backbone/.gitignore: -------------------------------------------------------------------------------- 1 | raw 2 | *.sw? 3 | .DS_Store 4 | node_modules 5 | -------------------------------------------------------------------------------- /vendor/sinon-qunit/AUTHORS: -------------------------------------------------------------------------------- 1 | Sinon-QUnit was written by 2 | Christian Johansen, christian@cjohansen.no 3 | -------------------------------------------------------------------------------- /vendor/backbone/.npmignore: -------------------------------------------------------------------------------- 1 | test/ 2 | Rakefile 3 | docs/ 4 | raw/ 5 | examples/ 6 | index.html 7 | .jshintrc 8 | -------------------------------------------------------------------------------- /vendor/backbone/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - 0.8 4 | notifications: 5 | email: false 6 | -------------------------------------------------------------------------------- /vendor/qunit/.gitignore: -------------------------------------------------------------------------------- 1 | .project 2 | *~ 3 | *.diff 4 | *.patch 5 | .DS_Store 6 | .settings 7 | node_modules 8 | dist/ 9 | -------------------------------------------------------------------------------- /vendor/qunit/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "0.8" 4 | before_script: 5 | - npm install -g grunt-cli -------------------------------------------------------------------------------- /vendor/backbone/docs/images/do.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/do.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/airbnb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/airbnb.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/arrows.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/artsy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/artsy.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/disqus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/disqus.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/easel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/easel.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/flow.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/gawker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/gawker.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/gilt.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/gilt.jpg -------------------------------------------------------------------------------- /vendor/backbone/docs/images/hulu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/hulu.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/lens.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/lens.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/quartz.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/quartz.jpg -------------------------------------------------------------------------------- /vendor/backbone/docs/images/rdio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/rdio.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/salon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/salon.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/spin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/spin.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/stripe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/stripe.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/todos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/todos.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/trello.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/trello.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/tzigla.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/tzigla.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/zocdoc.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/zocdoc.jpg -------------------------------------------------------------------------------- /vendor/sinon-qunit/.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "deps/sinon"] 2 | path = deps/sinon 3 | url = git@github.com:cjohansen/Sinon.JS.git 4 | -------------------------------------------------------------------------------- /vendor/backbone/docs/images/backbone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/backbone.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/baroque.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/baroque.jpg -------------------------------------------------------------------------------- /vendor/backbone/docs/images/blossom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/blossom.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/cloudapp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/cloudapp.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/diaspora.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/diaspora.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/favicon.ico -------------------------------------------------------------------------------- /vendor/backbone/docs/images/groupon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/groupon.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/inkling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/inkling.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/irccloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/irccloud.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/newsblur.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/newsblur.jpg -------------------------------------------------------------------------------- /vendor/backbone/docs/images/pandora.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/pandora.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/seatgeek.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/seatgeek.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/syllabus.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/syllabus.jpg -------------------------------------------------------------------------------- /vendor/backbone/docs/images/tilemill.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/tilemill.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/background.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/bitbucket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/bitbucket.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/code-school.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/code-school.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/foursquare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/foursquare.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/jolicloud.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/jolicloud.jpg -------------------------------------------------------------------------------- /vendor/backbone/docs/images/pitchfork.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/pitchfork.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/soundcloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/soundcloud.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/usa-today.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/usa-today.png -------------------------------------------------------------------------------- /vendor/backbone/examples/todos/destroy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/examples/todos/destroy.png -------------------------------------------------------------------------------- /vendor/qunit/test/async.js: -------------------------------------------------------------------------------- 1 | QUnit.start(); 2 | 3 | test("just a test", function( assert ) { 4 | expect(1); 5 | assert.ok(true); 6 | }); 7 | -------------------------------------------------------------------------------- /vendor/backbone/docs/images/dc-workspace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/dc-workspace.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/khan-academy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/khan-academy.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/menagerievet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/menagerievet.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/backbone-mobile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/backbone-mobile.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/walmart-mobile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/walmart-mobile.png -------------------------------------------------------------------------------- /vendor/backbone/docs/public/fonts/aller-bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/public/fonts/aller-bold.eot -------------------------------------------------------------------------------- /vendor/backbone/docs/public/fonts/aller-bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/public/fonts/aller-bold.ttf -------------------------------------------------------------------------------- /vendor/backbone/docs/public/fonts/fleurons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/public/fonts/fleurons.eot -------------------------------------------------------------------------------- /vendor/backbone/docs/public/fonts/fleurons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/public/fonts/fleurons.ttf -------------------------------------------------------------------------------- /vendor/backbone/docs/public/fonts/fleurons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/public/fonts/fleurons.woff -------------------------------------------------------------------------------- /vendor/backbone/docs/public/images/grey_@2X.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/public/images/grey_@2X.png -------------------------------------------------------------------------------- /vendor/backbone/docs/images/basecamp-calendar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/basecamp-calendar.jpg -------------------------------------------------------------------------------- /vendor/backbone/docs/images/slavery-footprint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/slavery-footprint.png -------------------------------------------------------------------------------- /vendor/backbone/docs/public/fonts/aller-bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/public/fonts/aller-bold.woff -------------------------------------------------------------------------------- /vendor/backbone/docs/public/fonts/aller-light.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/public/fonts/aller-light.eot -------------------------------------------------------------------------------- /vendor/backbone/docs/public/fonts/aller-light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/public/fonts/aller-light.ttf -------------------------------------------------------------------------------- /vendor/backbone/docs/public/fonts/aller-light.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/public/fonts/aller-light.woff -------------------------------------------------------------------------------- /vendor/backbone/docs/images/wpcom-notifications.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/images/wpcom-notifications.png -------------------------------------------------------------------------------- /vendor/backbone/docs/public/fonts/novecento-bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/public/fonts/novecento-bold.eot -------------------------------------------------------------------------------- /vendor/backbone/docs/public/fonts/novecento-bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/public/fonts/novecento-bold.ttf -------------------------------------------------------------------------------- /vendor/backbone/docs/public/fonts/novecento-bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afeld/backbone-nested/HEAD/vendor/backbone/docs/public/fonts/novecento-bold.woff -------------------------------------------------------------------------------- /vendor/sinon-qunit/test/fake_qunit.js: -------------------------------------------------------------------------------- 1 | /*global sinon*/ 2 | var QUnit = { 3 | ok: function () {}, 4 | test: sinon.spy() 5 | }; 6 | 7 | QUnit.originalTest = QUnit.test; 8 | -------------------------------------------------------------------------------- /vendor/sinon-qunit/Changelog.txt: -------------------------------------------------------------------------------- 1 | == 1.0.0 / 2010-12-06 2 | * Hooked assertions into QUnit's assertion counter 3 | * Added documentation 4 | == 0.1.0 / 2010-10-31 5 | * Initial release 6 | -------------------------------------------------------------------------------- /vendor/jquery/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "components-jquery", 3 | "version": "2.0.3", 4 | "description": "jQuery component", 5 | "keywords": ["jquery"], 6 | "main": "./jquery.js" 7 | } 8 | -------------------------------------------------------------------------------- /vendor/sinon-qunit/jsl.conf: -------------------------------------------------------------------------------- 1 | +output-format __FILENAME__(__LINE__): __ERROR__ 2 | 3 | +define sinon 4 | +define QUnit 5 | +define testCase 6 | +define test 7 | +define assert 8 | +define TestCase 9 | -------------------------------------------------------------------------------- /vendor/sinonjs/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sinonjs", 3 | "version": "1.7.1", 4 | "main": "sinon.js", 5 | "ignore": [ 6 | "**/.*", 7 | "node_modules", 8 | "components" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | # based off http://ariya.ofilabs.com/2012/03/phantomjs-and-travis-ci.html 2 | language: node_js 3 | node_js: 4 | - "0.10" 5 | - "0.11" 6 | before_install: 7 | - npm install grunt-cli bower -g 8 | - bower install --allow-root 9 | -------------------------------------------------------------------------------- /vendor/sinonjs/README.md: -------------------------------------------------------------------------------- 1 | sinon.js 2 | ======== 3 | 4 | SinonJS proxy repository for the BowerJS package manager 5 | 6 | Install with: `bower install sinon.js` 7 | 8 | For more information on SinonJS: https://github.com/cjohansen/Sinon.JS 9 | -------------------------------------------------------------------------------- /vendor/jquery/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "version": "2.0.3", 4 | "description": "jQuery component", 5 | "keywords": [ 6 | "jquery", 7 | "component" 8 | ], 9 | "main": "jquery.js", 10 | "license": "MIT" 11 | } 12 | -------------------------------------------------------------------------------- /vendor/sinon-qunit/Makefile: -------------------------------------------------------------------------------- 1 | default: test lint build 2 | build: 3 | ./build 4 | test: lib/sinon-qunit.js 5 | jstestdriver --tests all --reset 6 | clean: 7 | rm -fr pkg 8 | lint: 9 | juicer verify {lib,test}/*.js 10 | jsl --conf jsl.conf lib/*.js test/*.js 11 | -------------------------------------------------------------------------------- /vendor/jquery/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "repo": "components/jquery", 4 | "version": "2.0.3", 5 | "description": "jQuery component", 6 | "keywords": [ 7 | "jquery", 8 | "component" 9 | ], 10 | "main": "jquery.js", 11 | "scripts": [ 12 | "jquery.js" 13 | ], 14 | "license": "MIT" 15 | } 16 | -------------------------------------------------------------------------------- /vendor/sinon-qunit/jsTestDriver.conf: -------------------------------------------------------------------------------- 1 | server: http://localhost:4224 2 | 3 | load: 4 | - deps/sinon/lib/sinon.js 5 | - deps/sinon/lib/sinon/spy.js 6 | - deps/sinon/lib/sinon/stub.js 7 | - deps/sinon/lib/sinon/assert.js 8 | - deps/sinon/lib/sinon/test.js 9 | - test/fake_qunit.js 10 | - lib/*.js 11 | - test/helper.js 12 | - test/*.js 13 | -------------------------------------------------------------------------------- /test/mocha-require.js: -------------------------------------------------------------------------------- 1 | /*global describe, it*/ 2 | var assert = require('assert'); 3 | 4 | var Backbone = require('backbone'); 5 | require('../backbone-nested'); 6 | 7 | describe("CommonJS support", function() { 8 | it('should attach to Backbone when require backbone-nested', function() { 9 | assert.ok(Backbone.NestedModel); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /vendor/jquery/README.md: -------------------------------------------------------------------------------- 1 | jQuery Component 2 | ================ 3 | 4 | Shim repository for the [jQuery](http://jquery.com). 5 | 6 | Package Managers 7 | ---------------- 8 | 9 | * [Bower](http://bower.io/): `jquery` 10 | * [Component](https://github.com/component/component): `components/jquery` 11 | * [Composer](http://packagist.org/packages/components/jquery): `components/jquery` 12 | -------------------------------------------------------------------------------- /vendor/qunit/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "qunit", 3 | "homepage": "https://github.com/jquery/qunit", 4 | "version": "1.12.0", 5 | "_release": "1.12.0", 6 | "_resolution": { 7 | "type": "version", 8 | "tag": "v1.12.0", 9 | "commit": "a115f28ce4fbe837231358f898e8aea2a5689c4e" 10 | }, 11 | "_source": "git://github.com/jquery/qunit.git", 12 | "_target": "~1.12.0" 13 | } -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /vendor/qunit/test/logs.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | QUnit Logs Test Suite 6 | 7 | 8 | 9 | 10 | 11 |
12 |
test markup
13 | 14 | 15 | -------------------------------------------------------------------------------- /vendor/DocumentUp/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /vendor/qunit/test/swarminject.js: -------------------------------------------------------------------------------- 1 | // load testswarm agent 2 | (function() { 3 | var url = window.location.search; 4 | url = decodeURIComponent( url.slice( url.indexOf("swarmURL=") + 9 ) ); 5 | if ( !url || url.indexOf("http") !== 0 ) { 6 | return; 7 | } 8 | /*jshint evil:true */ 9 | document.write(""); 10 | })(); 11 | -------------------------------------------------------------------------------- /vendor/qunit/test/setTimeout.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | QUnit Fake setTimeout Test Suite 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /vendor/backbone/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "backbone", 3 | "homepage": "https://github.com/jashkenas/backbone", 4 | "version": "1.1.0", 5 | "_release": "1.1.0", 6 | "_resolution": { 7 | "type": "version", 8 | "tag": "1.1.0", 9 | "commit": "0a4399e3de5cb2ab75a0338669582f18c1fae3ae" 10 | }, 11 | "_source": "git://github.com/jashkenas/backbone.git", 12 | "_target": ">=0.9.2", 13 | "_originalSource": "backbone" 14 | } -------------------------------------------------------------------------------- /vendor/backbone/test/noconflict.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | 3 | module("Backbone.noConflict"); 4 | 5 | test('noConflict', 2, function() { 6 | var noconflictBackbone = Backbone.noConflict(); 7 | equal(window.Backbone, undefined, 'Returned window.Backbone'); 8 | window.Backbone = noconflictBackbone; 9 | equal(window.Backbone, noconflictBackbone, 'Backbone is still pointing to the original Backbone'); 10 | }); 11 | 12 | })(); 13 | -------------------------------------------------------------------------------- /vendor/sinon-qunit/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sinon-qunit", 3 | "homepage": "https://github.com/cjohansen/sinon-qunit", 4 | "version": "1.0.0", 5 | "_release": "1.0.0", 6 | "_resolution": { 7 | "type": "version", 8 | "tag": "1.0.0", 9 | "commit": "ea630acc9c1de7129a580950d27f4adaae933643" 10 | }, 11 | "_source": "git://github.com/cjohansen/sinon-qunit.git", 12 | "_target": "~1.0.0", 13 | "_originalSource": "sinon-qunit" 14 | } -------------------------------------------------------------------------------- /vendor/lodash/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lodash", 3 | "version": "2.2.1", 4 | "main": "dist/lodash.compat.js", 5 | "ignore": [ 6 | ".*", 7 | "*.custom.*", 8 | "*.template.*", 9 | "*.map", 10 | "*.md", 11 | "/*.min.*", 12 | "/lodash.js", 13 | "index.js", 14 | "component.json", 15 | "package.json", 16 | "doc", 17 | "modularize", 18 | "node_modules", 19 | "perf", 20 | "test", 21 | "vendor" 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /vendor/qunit/test/setTimeout.js: -------------------------------------------------------------------------------- 1 | QUnit.config.updateRate = 1; 2 | 3 | module( "Module that mucks with time", { 4 | setup: function() { 5 | this.setTimeout = window.setTimeout; 6 | window.setTimeout = function() {}; 7 | }, 8 | 9 | teardown: function() { 10 | window.setTimeout = this.setTimeout; 11 | } 12 | }); 13 | 14 | test( "just a test", function( assert ) { 15 | assert.ok(true); 16 | }); 17 | test( "just a test", function( assert ) { 18 | assert.ok(true); 19 | }); 20 | -------------------------------------------------------------------------------- /vendor/qunit/addons/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "predef": [ 3 | "QUnit" 4 | ], 5 | 6 | "bitwise": true, 7 | "camelcase": true, 8 | "curly": true, 9 | "eqeqeq": true, 10 | "forin": true, 11 | "immed": true, 12 | "latedef": true, 13 | "newcap": true, 14 | "noarg": true, 15 | "noempty": true, 16 | "nonew": true, 17 | "plusplus": false, 18 | "quotmark": false, 19 | "undef": true, 20 | "unused": true, 21 | "trailing": true, 22 | 23 | "browser": true, 24 | 25 | "onevar": true 26 | } 27 | -------------------------------------------------------------------------------- /vendor/qunit/test/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | QUnit Main Test Suite 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 |
test markup
15 | 16 | 17 | -------------------------------------------------------------------------------- /vendor/DocumentUp/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "DocumentUp", 3 | "homepage": "https://github.com/jeromegn/DocumentUp", 4 | "version": "0.1.1", 5 | "_release": "0.1.1", 6 | "_resolution": { 7 | "type": "version", 8 | "tag": "v0.1.1", 9 | "commit": "52aa00fdc4597769f366f01102eeab3bfb78de58" 10 | }, 11 | "_source": "git@github.com:jeromegn/DocumentUp.git", 12 | "_target": "~0.1.1", 13 | "_originalSource": "git@github.com:jeromegn/DocumentUp.git", 14 | "_direct": true 15 | } -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "backbone-nested-model", 3 | "version": "2.0.4", 4 | "dependencies": { 5 | "backbone": ">=0.9.2" 6 | }, 7 | "devDependencies": { 8 | "DocumentUp": "git@github.com:jeromegn/DocumentUp.git#~0.1.1", 9 | "jquery": "~2.0.3", 10 | "lodash": "~2.2.1", 11 | "qunit": "~1.12.0", 12 | "sinonjs": "~1.7.1", 13 | "sinon-qunit": "~1.0.0" 14 | }, 15 | "ignore": [ 16 | "demo", 17 | "test" 18 | ], 19 | "main": "backbone-nested.js" 20 | } 21 | -------------------------------------------------------------------------------- /vendor/sinonjs/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sinonjs", 3 | "version": "1.7.1", 4 | "main": "sinon.js", 5 | "ignore": [ 6 | "**/.*", 7 | "node_modules", 8 | "components" 9 | ], 10 | "homepage": "https://github.com/blittle/sinon.js", 11 | "_release": "1.7.1", 12 | "_resolution": { 13 | "type": "version", 14 | "tag": "1.7.1", 15 | "commit": "99b8c2eca646d71e78741af5c5a809eccb6495a0" 16 | }, 17 | "_source": "git://github.com/blittle/sinon.js.git", 18 | "_target": "~1.7.1" 19 | } -------------------------------------------------------------------------------- /vendor/qunit/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "predef": [ 3 | "exports" 4 | ], 5 | 6 | "bitwise": true, 7 | "camelcase": true, 8 | "curly": true, 9 | "eqeqeq": true, 10 | "forin": true, 11 | "immed": true, 12 | "latedef": false, 13 | "newcap": true, 14 | "noarg": true, 15 | "noempty": true, 16 | "nonew": true, 17 | "plusplus": false, 18 | "quotmark": "double", 19 | "undef": true, 20 | "unused": true, 21 | "trailing": true, 22 | 23 | "proto": true, 24 | "sub": true, 25 | 26 | "browser": true, 27 | 28 | "onevar": true 29 | } 30 | -------------------------------------------------------------------------------- /vendor/jquery/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "version": "2.0.3", 4 | "description": "jQuery component", 5 | "keywords": [ 6 | "jquery", 7 | "component" 8 | ], 9 | "main": "jquery.js", 10 | "license": "MIT", 11 | "homepage": "https://github.com/components/jquery", 12 | "_release": "2.0.3", 13 | "_resolution": { 14 | "type": "version", 15 | "tag": "2.0.3", 16 | "commit": "452a56b52b8f4a032256cdb8b6838f25f0bdb3d2" 17 | }, 18 | "_source": "git://github.com/components/jquery.git", 19 | "_target": "~2.0.3" 20 | } -------------------------------------------------------------------------------- /vendor/qunit/addons/phantomjs/README.md: -------------------------------------------------------------------------------- 1 | # PhantomJS Runner # 2 | A PhantomJS-powered headless test runner, providing basic console output for QUnit tests. 3 | 4 | ### Usage ### 5 | ```bash 6 | phantomjs runner.js [url-of-your-qunit-testsuite] [timeout-in-seconds] 7 | ``` 8 | 9 | ### Example ### 10 | ```bash 11 | phantomjs runner.js http://localhost/qunit/test/index.html 12 | ``` 13 | 14 | ### Notes ### 15 | - Requires [PhantomJS](http://phantomjs.org/) 1.6+ (1.7+ recommended). 16 | - If you're using Grunt, you should take a look at its [qunit task](https://github.com/gruntjs/grunt-contrib-qunit). 17 | -------------------------------------------------------------------------------- /vendor/qunit/test/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "predef": [ 3 | "QUnit", 4 | "module", 5 | "test", 6 | "asyncTest", 7 | "expect", 8 | "start", 9 | "stop", 10 | 11 | "raises" 12 | ], 13 | 14 | "bitwise": true, 15 | "camelcase": true, 16 | "curly": true, 17 | "eqeqeq": true, 18 | "forin": true, 19 | "immed": true, 20 | "latedef": false, 21 | "newcap": true, 22 | "noarg": true, 23 | "noempty": true, 24 | "nonew": true, 25 | "plusplus": false, 26 | "quotmark": false, 27 | "undef": true, 28 | "unused": true, 29 | "trailing": true, 30 | 31 | "browser": true, 32 | 33 | "onevar": false 34 | } 35 | -------------------------------------------------------------------------------- /demo/before.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 23 | 24 | (see script tag in <head>) 25 | 26 | -------------------------------------------------------------------------------- /demo/after.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 23 | 24 | (see script tag in <head>) 25 | 26 | -------------------------------------------------------------------------------- /vendor/qunit/test/node-test.js: -------------------------------------------------------------------------------- 1 | /*jshint node:true, undef:false */ 2 | // Run with: $ node test/node-test.js 3 | var QUnit = require("../qunit/qunit"); 4 | 5 | QUnit.log(function(details) { 6 | if (!details.result) { 7 | var output = "FAILED: " + (details.message ? details.message + ", " : ""); 8 | if (details.actual) { 9 | output += "expected: " + details.expected + ", actual: " + details.actual; 10 | } 11 | if (details.source) { 12 | output += ", " + details.source; 13 | } 14 | console.log(output); 15 | } 16 | }); 17 | 18 | QUnit.test("fail twice with stacktrace", function(assert) { 19 | /*jshint expr:true */ 20 | assert.equal(true, false); 21 | assert.equal(true, false, "gotta fail"); 22 | x.y.z; // Throws ReferenceError 23 | }); 24 | -------------------------------------------------------------------------------- /vendor/qunit/test/narwhal-test.js: -------------------------------------------------------------------------------- 1 | /*jshint node:true, undef:false */ 2 | // Run with: $ narwhal test/narwhal-test.js 3 | var QUnit = require("../qunit/qunit"); 4 | 5 | QUnit.log(function(details) { 6 | if (!details.result) { 7 | var output = "FAILED: " + (details.message ? details.message + ", " : ""); 8 | if (details.actual) { 9 | output += "expected: " + details.expected + ", actual: " + details.actual; 10 | } 11 | if (details.source) { 12 | output += ", " + details.source; 13 | } 14 | print(output); 15 | } 16 | }); 17 | 18 | QUnit.test("fail twice with stacktrace", function(assert) { 19 | /*jshint expr:true */ 20 | assert.equal(true, false); 21 | assert.equal(true, false, "gotta fail"); 22 | x.y.z; // Throws ReferenceError 23 | }); 24 | -------------------------------------------------------------------------------- /vendor/sinon-qunit/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sinon-qunit", 3 | "description": "QUnit adapter for Sinon.JS: JavaScript test spies, stubs and mocks.", 4 | "version": "1.0.0", 5 | "homepage": "http://cjohansen.no/sinon/sinon-qunit/", 6 | "author": "Christian Johansen", 7 | "repository": { 8 | "type": "git", 9 | "url": "http://github.com/cjohansen/sinon-qunit.git" 10 | }, 11 | "bugs": { 12 | "mail": "christian@cjohansen.no", 13 | "web": "http://github.com/cjohansen/sinon-qunit/issues" 14 | }, 15 | "licenses": [ 16 | { "type": "BSD", 17 | "url": "http://github.com/cjohansen/sinon-qunit/blob/master/LICENSE", 18 | } 19 | ], 20 | "main": "./lib/sinon-qunit.js", 21 | "engines": { "node": ">=0.1.103" } 22 | } 23 | -------------------------------------------------------------------------------- /vendor/lodash/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lodash", 3 | "version": "2.2.1", 4 | "main": "dist/lodash.compat.js", 5 | "ignore": [ 6 | ".*", 7 | "*.custom.*", 8 | "*.template.*", 9 | "*.map", 10 | "*.md", 11 | "/*.min.*", 12 | "/lodash.js", 13 | "index.js", 14 | "component.json", 15 | "package.json", 16 | "doc", 17 | "modularize", 18 | "node_modules", 19 | "perf", 20 | "test", 21 | "vendor" 22 | ], 23 | "homepage": "https://github.com/lodash/lodash", 24 | "_release": "2.2.1", 25 | "_resolution": { 26 | "type": "version", 27 | "tag": "2.2.1", 28 | "commit": "3fb0846d88e31db31b45ce37a2a8a8a605761cbd" 29 | }, 30 | "_source": "git://github.com/lodash/lodash.git", 31 | "_target": "~2.2.1" 32 | } -------------------------------------------------------------------------------- /vendor/DocumentUp/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": "Jerome Gravel-Niquet (http://jgn.me)", 3 | "name": "DocumentUp", 4 | "description": "Pretty documentation generator for Github projects with proper Readme.", 5 | "version": "0.1.1", 6 | "homepage": "http://documentup.com", 7 | "repository": { 8 | "type": "git", 9 | "url": "git://github.com/jeromegn/documentup.git" 10 | }, 11 | "engines": { 12 | "node": "~0.6.1" 13 | }, 14 | "filename": "documentup.min.js", 15 | "dependencies": {}, 16 | "devDependencies": { 17 | "coffee-script": "~1.1.0", 18 | "stylus": "0.22.6", 19 | "nib": "0.3.2", 20 | "uglify-js": "1.2.5", 21 | "ender": "0.8.3", 22 | "async": "0.1.15" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /vendor/sinon-qunit/test/helper.js: -------------------------------------------------------------------------------- 1 | /*jslint onevar: false, eqeqeq: false*/ 2 | /*global TestCase*/ 3 | /** 4 | * @author Christian Johansen (christian@cjohansen.no) 5 | * @license BSD 6 | * 7 | * Copyright (c) 2010 Christian Johansen 8 | */ 9 | function testCase(name, tests) { 10 | var jstdCase = {}; 11 | var jstdTestCase = TestCase; // Silence JsLint... 12 | 13 | for (var prop in tests) { 14 | if (tests.hasOwnProperty(prop)) { 15 | if (!/(^(setUp|tearDown)$)|^test/.test(prop) && 16 | typeof tests[prop] == "function") { 17 | jstdCase["test " + prop] = tests[prop]; 18 | } else { 19 | jstdCase[prop] = tests[prop]; 20 | } 21 | } 22 | } 23 | 24 | jstdTestCase(name, jstdCase); 25 | } 26 | -------------------------------------------------------------------------------- /vendor/qunit/test/async.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | QUnit Async Test Suite 6 | 7 | 8 | 9 |
10 |
test markup
11 | 12 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /vendor/qunit/test/headless.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | QUnit Headless Test Suite 6 | 7 | 8 | 9 | 10 | 24 | 25 | 26 |
test markup
27 | 28 | 29 | -------------------------------------------------------------------------------- /vendor/sinon-qunit/lib/sinon-qunit.js: -------------------------------------------------------------------------------- 1 | /*global sinon, QUnit, test*/ 2 | sinon.assert.fail = function (msg) { 3 | QUnit.ok(false, msg); 4 | }; 5 | 6 | sinon.assert.pass = function (assertion) { 7 | QUnit.ok(true, assertion); 8 | }; 9 | 10 | sinon.config = { 11 | injectIntoThis: true, 12 | injectInto: null, 13 | properties: ["spy", "stub", "mock", "clock", "sandbox"], 14 | useFakeTimers: false, 15 | useFakeServer: false 16 | }; 17 | 18 | (function (global) { 19 | var qTest = QUnit.test; 20 | 21 | QUnit.test = global.test = function (testName, expected, callback, async) { 22 | if (arguments.length === 2) { 23 | callback = expected; 24 | expected = null; 25 | } 26 | 27 | return qTest(testName, expected, sinon.test(callback), async); 28 | }; 29 | }(this)); 30 | -------------------------------------------------------------------------------- /demo/hack.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 28 | 29 | (see script tag in <head>) 30 | 31 | -------------------------------------------------------------------------------- /test/speed.js: -------------------------------------------------------------------------------- 1 | /*global Backbone, JSLitmus */ 2 | (function(){ 3 | 'use strict'; 4 | 5 | var fn = function(){}; 6 | 7 | var model1 = new Backbone.NestedModel(); 8 | model1.on('change:x.y.z', fn); 9 | 10 | jslitmus.test('set x.y.z rand() with an attribute observer', function() { 11 | model1.set('x.y.z', Math.random()); 12 | }); 13 | 14 | var model2 = new Backbone.NestedModel(); 15 | model2.on('change:x.y.z', fn); 16 | 17 | jslitmus.test('set x.y.z rand() and clear with an attribute observer', function() { 18 | model2.set('x.y.z', Math.random()); 19 | model2.clear(); 20 | }); 21 | 22 | jslitmus.test('set x.y.z rand() silently and clear silently with an attribute observer', function() { 23 | model2.set('x.y.z', Math.random(), {silent: true}); 24 | model2.clear({silent: true}); 25 | }); 26 | 27 | 28 | })(); 29 | -------------------------------------------------------------------------------- /vendor/DocumentUp/vendor/javascript/languages/ini.js: -------------------------------------------------------------------------------- 1 | /* 2 | Language: Ini 3 | */ 4 | 5 | hljs.LANGUAGES.ini = { 6 | case_insensitive: true, 7 | defaultMode: { 8 | illegal: '[^\\s]', 9 | contains: [ 10 | { 11 | className: 'comment', 12 | begin: ';', end: '$' 13 | }, 14 | { 15 | className: 'title', 16 | begin: '^\\[', end: '\\]' 17 | }, 18 | { 19 | className: 'setting', 20 | begin: '^[a-z0-9_\\[\\]]+[ \\t]*=[ \\t]*', end: '$', 21 | contains: [ 22 | { 23 | className: 'value', 24 | endsWithParent: true, 25 | keywords: {'on': 1, 'off': 1, 'true': 1, 'false': 1, 'yes': 1, 'no': 1}, 26 | contains: [hljs.QUOTE_STRING_MODE, hljs.NUMBER_MODE] 27 | } 28 | ] 29 | } 30 | ] 31 | } 32 | }; 33 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "backbone-nested", 3 | "version": "2.0.4", 4 | "description": "A plugin to make Backbone.js keep track of nested attributes.", 5 | "scripts": { 6 | "test": "bower install; grunt" 7 | }, 8 | "dependencies": { 9 | "underscore": ">=1.5.0", 10 | "backbone": ">=0.9.2" 11 | }, 12 | "devDependencies": { 13 | "grunt": "~0.4.1", 14 | "grunt-contrib-qunit": "~0.2.2", 15 | "grunt-contrib-jshint": "~0.6.4", 16 | "grunt-mocha-test": "~0.8.2", 17 | "grunt-contrib-watch": "~0.5.3", 18 | "jslitmus": "~0.1.0", 19 | "mocha": "~1.17.1", 20 | "grunt-cli": "*", 21 | "bower": "*" 22 | }, 23 | "homepage": "http://afeld.github.com/backbone-nested/", 24 | "main": "backbone-nested.js", 25 | "repository": { 26 | "type": "git", 27 | "url": "https://github.com/afeld/backbone-nested.git" 28 | }, 29 | "github": "https://github.com/afeld/backbone-nested" 30 | } 31 | -------------------------------------------------------------------------------- /vendor/backbone/test/environment.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | 3 | var sync = Backbone.sync; 4 | var ajax = Backbone.ajax; 5 | var emulateHTTP = Backbone.emulateHTTP; 6 | var emulateJSON = Backbone.emulateJSON; 7 | 8 | QUnit.testStart(function() { 9 | var env = this.config.current.testEnvironment; 10 | 11 | // Capture ajax settings for comparison. 12 | Backbone.ajax = function(settings) { 13 | env.ajaxSettings = settings; 14 | }; 15 | 16 | // Capture the arguments to Backbone.sync for comparison. 17 | Backbone.sync = function(method, model, options) { 18 | env.syncArgs = { 19 | method: method, 20 | model: model, 21 | options: options 22 | }; 23 | sync.apply(this, arguments); 24 | }; 25 | 26 | }); 27 | 28 | QUnit.testDone(function() { 29 | Backbone.sync = sync; 30 | Backbone.ajax = ajax; 31 | Backbone.emulateHTTP = emulateHTTP; 32 | Backbone.emulateJSON = emulateJSON; 33 | }); 34 | 35 | })(); 36 | -------------------------------------------------------------------------------- /vendor/sinon-qunit/build: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require "fileutils" 3 | require "pathname" 4 | 5 | def add_license(file, version) 6 | contents = File.read(file) 7 | 8 | File.open(file, "w") do |f| 9 | f.puts < 2 | 3 | 4 | 5 | Backbone Test Suite 6 | 7 | 8 | 9 | 10 |
11 |
12 |
13 |

Test

14 |
15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /vendor/jquery/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "components/jquery", 3 | "description": "jQuery JavaScript Library", 4 | "type": "component", 5 | "homepage": "http://jquery.com", 6 | "license": "MIT", 7 | "support": { 8 | "irc": "irc://irc.freenode.org/jquery", 9 | "issues": "http://bugs.jquery.com", 10 | "forum": "http://forum.jquery.com", 11 | "wiki": "http://docs.jquery.com/", 12 | "source": "https://github.com/jquery/jquery" 13 | }, 14 | "authors": [ 15 | { 16 | "name": "John Resig", 17 | "email": "jeresig@gmail.com" 18 | } 19 | ], 20 | "require": { 21 | "robloach/component-installer": "*" 22 | }, 23 | "extra": { 24 | "component": { 25 | "scripts": [ 26 | "jquery.js" 27 | ], 28 | "files": [ 29 | "jquery.min.js", 30 | "jquery-migrate.js", 31 | "jquery-migrate.min.js" 32 | ] 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /vendor/DocumentUp/src/stylesheets/normalize.styl: -------------------------------------------------------------------------------- 1 | html, body, div, span, object, iframe, 2 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 3 | a, abbr, acronym, address, code, 4 | del, dfn, em, img, q, dl, dt, dd, ol, ul, li, 5 | fieldset, form, label, legend, 6 | table, caption, tbody, tfoot, thead, tr, th, td { 7 | margin: 0; 8 | padding: 0; 9 | border: 0; 10 | font-weight: inherit; 11 | font-style: inherit; 12 | font-size: 100%; 13 | font-family: inherit; 14 | vertical-align: baseline; 15 | } 16 | 17 | 18 | /* Tables still need 'cellspacing="0"' in the markup. */ 19 | table { border-collapse: separate; border-spacing: 0; } 20 | caption, th, td { text-align: left; font-weight: normal; } 21 | table, td, th { vertical-align: middle; } 22 | 23 | /* Remove possible quote marks (") from ,
. */ 24 | blockquote:before, blockquote:after, q:before, q:after { content: ""; } 25 | blockquote, q { quotes: "" ""; } 26 | 27 | /* Remove annoying border on linked images. */ 28 | a img { border: none; } 29 | 30 | 31 | body { 32 | 33 | margin: 10px; 34 | } 35 | 36 | -------------------------------------------------------------------------------- /vendor/backbone/test/model.coffee: -------------------------------------------------------------------------------- 1 | # Quick Backbone/CoffeeScript tests to make sure that inheritance 2 | # works correctly. 3 | 4 | {ok, equal, deepEqual} = require 'assert' 5 | {Model, Collection, Events} = require '../backbone' 6 | 7 | 8 | # Patch `ok` to store a count of passed tests... 9 | count = 0 10 | oldOk = ok 11 | ok = -> 12 | oldOk arguments... 13 | count++ 14 | 15 | 16 | class Document extends Model 17 | 18 | fullName: -> 19 | @get('name') + ' ' + @get('surname') 20 | 21 | tempest = new Document 22 | id : '1-the-tempest', 23 | title : "The Tempest", 24 | name : "William" 25 | surname : "Shakespeare" 26 | length : 123 27 | 28 | ok tempest.fullName() is "William Shakespeare" 29 | ok tempest.get('length') is 123 30 | 31 | 32 | class ProperDocument extends Document 33 | 34 | fullName: -> 35 | "Mr. " + super 36 | 37 | properTempest = new ProperDocument tempest.attributes 38 | 39 | ok properTempest.fullName() is "Mr. William Shakespeare" 40 | ok properTempest.get('length') is 123 41 | 42 | 43 | console.log "passed #{count} tests" 44 | -------------------------------------------------------------------------------- /vendor/qunit/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | Welcome! Thanks for your interest in contributing to QUnit. You're **almost** in the right place. More information on how to contribute to this and all other jQuery Foundation projects is over at [contribute.jquery.org](http://contribute.jquery.org). You'll definitely want to take a look at the articles on contributing [code](http://contribute.jquery.org/code). 2 | 3 | You may also want to take a look at our [commit & pull request guide](http://contribute.jquery.org/commits-and-pull-requests/) and [style guides](http://contribute.jquery.org/style-guide/) for instructions on how to maintain your fork and submit your code. Before we can merge any pull request, we'll also need you to sign our [contributor license agreement](http://contribute.jquery.org/cla). 4 | 5 | You can find us on [IRC](http://irc.jquery.org), specifically in [#jquery-dev](irc://irc.freenode.net/#jquery-dev) should you have any questions. If you've never contributed to open source before, we've put together [a short guide with tips, tricks, and ideas on getting started](http://contribute.jquery.org/open-source/). 6 | -------------------------------------------------------------------------------- /vendor/DocumentUp/vendor/javascript/languages/dos.js: -------------------------------------------------------------------------------- 1 | /* 2 | Language: DOS .bat 3 | Author: Alexander Makarov (http://rmcreative.ru/) 4 | */ 5 | 6 | hljs.LANGUAGES.dos = { 7 | case_insensitive: true, 8 | defaultMode: { 9 | keywords: { 10 | 'flow': {'if':1, 'else':1, 'goto':1, 'for':1, 'in':1, 'do':1, 'call':1, 'exit':1, 'not':1, 'exist':1, 'errorlevel':1, 'defined':1, 'equ':1, 'neq':1, 'lss':1, 'leq':1, 'gtr':1, 'geq':1}, 11 | 'keyword':{'shift':1, 'cd':1, 'dir':1, 'echo':1, 'setlocal':1, 'endlocal':1, 'set':1, 'pause':1, 'copy':1}, 12 | 'stream':{'prn':1, 'nul':1, 'lpt3':1, 'lpt2':1, 'lpt1':1, 'con':1, 'com4':1, 'com3':1, 'com2':1, 'com1':1, 'aux':1}, 13 | 'winutils':{'ping':1, 'net':1, 'ipconfig':1, 'taskkill':1, 'xcopy':1, 'ren':1, 'del':1} 14 | }, 15 | contains: [ 16 | { 17 | className: 'envvar', begin: '%[^ ]+?%' 18 | }, 19 | { 20 | className: 'number', begin: '\\b\\d+', 21 | relevance: 0 22 | }, 23 | { 24 | className: 'comment', 25 | begin: '@?rem', end: '$' 26 | } 27 | ] 28 | } 29 | }; 30 | -------------------------------------------------------------------------------- /vendor/backbone/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ## How to Open a Backbone.js Ticket 2 | 3 | * Do not use tickets to ask for help with (debugging) your application. Ask on 4 | the [mailing list](https://groups.google.com/forum/#!forum/backbonejs), 5 | in the IRC channel (`#documentcloud` on Freenode), or if you understand your 6 | specific problem, on [StackOverflow](http://stackoverflow.com/questions/tagged/backbone.js). 7 | 8 | * Before you open a ticket or send a pull request, 9 | [search](https://github.com/jashkenas/backbone/issues) for previous 10 | discussions about the same feature or issue. Add to the earlier ticket if you 11 | find one. 12 | 13 | * Before sending a pull request for a feature or bug fix, be sure to have 14 | [tests](http://backbonejs.org/test/). 15 | 16 | * Use the same coding style as the rest of the 17 | [codebase](https://github.com/jashkenas/backbone/blob/master/backbone.js). 18 | 19 | * In your pull request, do not add documentation or rebuild the minified 20 | `backbone-min.js` file. We'll do that before cutting a new release. 21 | 22 | * All pull requests should be made to the `master` branch. 23 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011-2012 Aidan Feldman 2 | 3 | Permission is hereby granted, free of charge, to any person 4 | obtaining a copy of this software and associated documentation 5 | files (the "Software"), to deal in the Software without 6 | restriction, including without limitation the rights to use, 7 | copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the 9 | Software is furnished to do so, subject to the following 10 | conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /Gruntfile.js: -------------------------------------------------------------------------------- 1 | /*global module:false*/ 2 | module.exports = function(grunt) { 3 | // Project configuration. 4 | grunt.initConfig({ 5 | jshint: { 6 | files: ['grunt.js', '*.js', 'test/nested-model.js'], 7 | options: { 8 | curly: false, 9 | eqeqeq: true, 10 | immed: true, 11 | latedef: true, 12 | newcap: true, 13 | noarg: true, 14 | sub: true, 15 | undef: true, 16 | boss: true, 17 | eqnull: true, 18 | 19 | globals: { 20 | jQuery: true 21 | } 22 | }, 23 | }, 24 | qunit: { 25 | index: ['test/index.html'] 26 | }, 27 | mochaTest: { 28 | test: { 29 | src: ['test/mocha-*.js'] 30 | } 31 | }, 32 | watch: { 33 | files: ['', 'test/**'], 34 | tasks: ['jshint', 'qunit'] 35 | } 36 | }); 37 | 38 | grunt.loadNpmTasks('grunt-contrib-jshint'); 39 | grunt.loadNpmTasks('grunt-contrib-qunit'); 40 | grunt.loadNpmTasks('grunt-mocha-test'); 41 | 42 | // Default task. 43 | grunt.registerTask('default', ['jshint', 'qunit', 'mochaTest']); 44 | }; 45 | -------------------------------------------------------------------------------- /vendor/backbone/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2010-2013 Jeremy Ashkenas, DocumentCloud 2 | 3 | Permission is hereby granted, free of charge, to any person 4 | obtaining a copy of this software and associated documentation 5 | files (the "Software"), to deal in the Software without 6 | restriction, including without limitation the rights to use, 7 | copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the 9 | Software is furnished to do so, subject to the following 10 | conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /vendor/qunit/MIT-LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2013 jQuery Foundation and other contributors 2 | http://jquery.com/ 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining 5 | a copy of this software and associated documentation files (the 6 | "Software"), to deal in the Software without restriction, including 7 | without limitation the rights to use, copy, modify, merge, publish, 8 | distribute, sublicense, and/or sell copies of the Software, and to 9 | permit persons to whom the Software is furnished to do so, subject to 10 | the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 19 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 20 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 21 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /vendor/backbone/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "backbone", 3 | "description" : "Give your JS App some Backbone with Models, Views, Collections, and Events.", 4 | "url" : "http://backbonejs.org", 5 | "keywords" : ["model", "view", "controller", "router", "server", "client", "browser"], 6 | "author" : "Jeremy Ashkenas ", 7 | "dependencies" : { 8 | "underscore" : ">=1.4.3" 9 | }, 10 | "devDependencies": { 11 | "phantomjs": "1.9.0-1", 12 | "docco": "0.6.1", 13 | "coffee-script": "1.6.1" 14 | }, 15 | "scripts": { 16 | "test": "phantomjs test/vendor/runner.js test/index.html?noglobals=true && coffee test/model.coffee", 17 | "build": "uglifyjs backbone.js --mangle --source-map backbone-min.map -o backbone-min.js", 18 | "doc": "docco backbone.js && docco examples/todos/todos.js examples/backbone.localstorage.js", 19 | "lint": "jsl -nofilelisting -nologo -conf docs/jsl.conf -process backbone.js" 20 | }, 21 | "main" : "backbone.js", 22 | "version" : "1.1.0", 23 | "license" : "MIT", 24 | "repository": { 25 | "type": "git", 26 | "url": "https://github.com/jashkenas/backbone.git" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /vendor/qunit/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "qunitjs", 3 | "title": "QUnit", 4 | "description": "An easy-to-use JavaScript Unit Testing framework.", 5 | "version": "1.12.0", 6 | "author": { 7 | "name": "jQuery Foundation and other contributors", 8 | "url": "https://github.com/jquery/qunit/blob/master/AUTHORS.txt" 9 | }, 10 | "contributors": [ 11 | "John Resig (http://ejohn.org/)", 12 | "Jörn Zaefferer (http://bassistance.de/)" 13 | ], 14 | "homepage": "http://qunitjs.com", 15 | "repository": { 16 | "type": "git", 17 | "url": "git://github.com/jquery/qunit.git" 18 | }, 19 | "bugs": { 20 | "url": "https://github.com/jquery/qunit/issues" 21 | }, 22 | "license": { 23 | "name": "MIT", 24 | "url": "http://www.opensource.org/licenses/mit-license.php" 25 | }, 26 | "keywords": [ 27 | "testing", 28 | "unit", 29 | "jquery" 30 | ], 31 | "main": "qunit/qunit.js", 32 | "scripts": { 33 | "test": "grunt" 34 | }, 35 | "devDependencies": { 36 | "grunt": "~0.4.0", 37 | "grunt-contrib-jshint": "~0.2.0", 38 | "grunt-contrib-qunit": "~0.2.0", 39 | "grunt-contrib-watch": "~0.3.0", 40 | "grunt-git-authors": "~1.2.0", 41 | "testswarm": "~1.0.1" 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /vendor/lodash/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2012-2013 The Dojo Foundation 2 | Based on Underscore.js 1.5.2, copyright 2009-2013 Jeremy Ashkenas, 3 | DocumentCloud and Investigative Reporters & Editors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | "Software"), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 20 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 21 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 22 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /vendor/DocumentUp/vendor/javascript/languages/smalltalk.js: -------------------------------------------------------------------------------- 1 | /* 2 | Language: Smalltalk 3 | Author: Vladimir Gubarkov 4 | */ 5 | 6 | hljs.LANGUAGES.smalltalk = function() { 7 | var VAR_IDENT_RE = '[a-z][a-zA-Z0-9_]*'; 8 | var CHAR = { 9 | className: 'char', 10 | begin: '\\$.{1}' 11 | }; 12 | var SYMBOL = { 13 | className: 'symbol', 14 | begin: '#' + hljs.UNDERSCORE_IDENT_RE 15 | }; 16 | return { 17 | defaultMode: { 18 | keywords: {'self': 1, 'super': 1, 'nil': 1, 'true': 1, 'false': 1, 'thisContext': 1}, // only 6 19 | contains: [ 20 | { 21 | className: 'comment', 22 | begin: '"', end: '"', 23 | relevance: 0 24 | }, 25 | hljs.APOS_STRING_MODE, 26 | { 27 | className: 'class', 28 | begin: '\\b[A-Z][A-Za-z0-9_]*', 29 | relevance: 0 30 | }, 31 | { 32 | className: 'method', 33 | begin: VAR_IDENT_RE + ':' 34 | }, 35 | hljs.C_NUMBER_MODE, 36 | SYMBOL, 37 | CHAR, 38 | { 39 | className: 'localvars', 40 | begin: '\\|\\s*((' + VAR_IDENT_RE + ')\\s*)+\\|' 41 | }, 42 | { 43 | className: 'array', 44 | begin: '\\#\\(', end: '\\)', 45 | contains: [ 46 | hljs.APOS_STRING_MODE, 47 | CHAR, 48 | hljs.C_NUMBER_MODE, 49 | SYMBOL 50 | ] 51 | } 52 | ] 53 | } 54 | }; 55 | }(); 56 | -------------------------------------------------------------------------------- /vendor/DocumentUp/vendor/javascript/languages/diff.js: -------------------------------------------------------------------------------- 1 | /* 2 | Language: Diff 3 | Description: Unified and context diff 4 | Author: Vasily Polovnyov 5 | */ 6 | 7 | hljs.LANGUAGES.diff = { 8 | case_insensitive: true, 9 | defaultMode: { 10 | contains: [ 11 | { 12 | className: 'chunk', 13 | begin: '^\\@\\@ +\\-\\d+,\\d+ +\\+\\d+,\\d+ +\\@\\@$', 14 | relevance: 10 15 | }, 16 | { 17 | className: 'chunk', 18 | begin: '^\\*\\*\\* +\\d+,\\d+ +\\*\\*\\*\\*$', 19 | relevance: 10 20 | }, 21 | { 22 | className: 'chunk', 23 | begin: '^\\-\\-\\- +\\d+,\\d+ +\\-\\-\\-\\-$', 24 | relevance: 10 25 | }, 26 | { 27 | className: 'header', 28 | begin: 'Index: ', end: '$' 29 | }, 30 | { 31 | className: 'header', 32 | begin: '=====', end: '=====$' 33 | }, 34 | { 35 | className: 'header', 36 | begin: '^\\-\\-\\-', end: '$' 37 | }, 38 | { 39 | className: 'header', 40 | begin: '^\\*{3} ', end: '$' 41 | }, 42 | { 43 | className: 'header', 44 | begin: '^\\+\\+\\+', end: '$' 45 | }, 46 | { 47 | className: 'header', 48 | begin: '\\*{5}', end: '\\*{5}$' 49 | }, 50 | { 51 | className: 'addition', 52 | begin: '^\\+', end: '$' 53 | }, 54 | { 55 | className: 'deletion', 56 | begin: '^\\-', end: '$' 57 | }, 58 | { 59 | className: 'change', 60 | begin: '^\\!', end: '$' 61 | } 62 | ] 63 | } 64 | }; 65 | -------------------------------------------------------------------------------- /vendor/sinon-qunit/LICENSE: -------------------------------------------------------------------------------- 1 | (The BSD License) 2 | 3 | Copyright (c) 2010-2011, Christian Johansen, christian@cjohansen.no 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without modification, 7 | are permitted provided that the following conditions are met: 8 | 9 | * Redistributions of source code must retain the above copyright notice, 10 | this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright notice, 12 | this list of conditions and the following disclaimer in the documentation 13 | and/or other materials provided with the distribution. 14 | * Neither the name of Christian Johansen nor the names of his contributors 15 | may be used to endorse or promote products derived from this software 16 | without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 19 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 27 | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /vendor/DocumentUp/vendor/javascript/languages/bash.js: -------------------------------------------------------------------------------- 1 | /* 2 | Language: Bash 3 | Author: vah 4 | */ 5 | 6 | hljs.LANGUAGES.bash = function(){ 7 | var BASH_LITERAL = {'true' : 1, 'false' : 1}; 8 | var VAR1 = { 9 | className: 'variable', 10 | begin: '\\$([a-zA-Z0-9_]+)\\b' 11 | }; 12 | var VAR2 = { 13 | className: 'variable', 14 | begin: '\\$\\{(([^}])|(\\\\}))+\\}', 15 | contains: [hljs.C_NUMBER_MODE] 16 | }; 17 | var STRING = { 18 | className: 'string', 19 | begin: '"', end: '"', 20 | illegal: '\\n', 21 | contains: [hljs.BACKSLASH_ESCAPE, VAR1, VAR2], 22 | relevance: 0 23 | }; 24 | var TEST_CONDITION = { 25 | className: 'test_condition', 26 | begin: '', end: '', 27 | contains: [STRING, VAR1, VAR2, hljs.C_NUMBER_MODE], 28 | keywords: { 29 | 'literal': BASH_LITERAL 30 | }, 31 | relevance: 0 32 | }; 33 | 34 | return { 35 | defaultMode: { 36 | keywords: { 37 | 'keyword': {'if' : 1, 'then' : 1, 'else' : 1, 'fi' : 1, 'for' : 1, 'break' : 1, 'continue' : 1, 'while' : 1, 'in' : 1, 'do' : 1, 'done' : 1, 'echo' : 1, 'exit' : 1, 'return' : 1, 'set' : 1, 'declare' : 1}, 38 | 'literal': BASH_LITERAL 39 | }, 40 | contains: [ 41 | { 42 | className: 'shebang', 43 | begin: '(#!\\/bin\\/bash)|(#!\\/bin\\/sh)', 44 | relevance: 10 45 | }, 46 | hljs.HASH_COMMENT_MODE, 47 | hljs.C_NUMBER_MODE, 48 | STRING, 49 | VAR1, 50 | VAR2, 51 | hljs.inherit(TEST_CONDITION, {begin: '\\[ ', end: ' \\]', relevance: 0}), 52 | hljs.inherit(TEST_CONDITION, {begin: '\\[\\[ ', end: ' \\]\\]'}) 53 | ] 54 | } 55 | }; 56 | }(); 57 | -------------------------------------------------------------------------------- /vendor/backbone/README.md: -------------------------------------------------------------------------------- 1 | ____ __ __ 2 | /\ _`\ /\ \ /\ \ __ 3 | \ \ \ \ \ __ ___\ \ \/'\\ \ \____ ___ ___ __ /\_\ ____ 4 | \ \ _ <' /'__`\ /'___\ \ , < \ \ '__`\ / __`\ /' _ `\ /'__`\ \/\ \ /',__\ 5 | \ \ \ \ \/\ \ \.\_/\ \__/\ \ \\`\\ \ \ \ \/\ \ \ \/\ \/\ \/\ __/ __ \ \ \/\__, `\ 6 | \ \____/\ \__/.\_\ \____\\ \_\ \_\ \_,__/\ \____/\ \_\ \_\ \____\/\_\_\ \ \/\____/ 7 | \/___/ \/__/\/_/\/____/ \/_/\/_/\/___/ \/___/ \/_/\/_/\/____/\/_/\ \_\ \/___/ 8 | \ \____/ 9 | \/___/ 10 | (_'_______________________________________________________________________________'_) 11 | (_.———————————————————————————————————————————————————————————————————————————————._) 12 | 13 | 14 | Backbone supplies structure to JavaScript-heavy applications by providing models key-value binding and custom events, collections with a rich API of enumerable functions, views with declarative event handling, and connects it all to your existing application over a RESTful JSON interface. 15 | 16 | For Docs, License, Tests, pre-packed downloads, and everything else, really, see: 17 | http://backbonejs.org 18 | 19 | To suggest a feature, report a bug, or general discussion: 20 | http://github.com/jashkenas/backbone/issues 21 | 22 | Backbone is an open-sourced component of DocumentCloud: 23 | https://github.com/documentcloud 24 | 25 | Many thanks to our contributors: 26 | http://github.com/jashkenas/backbone/contributors 27 | 28 | Special thanks to Robert Kieffer for the original philosophy behind Backbone. 29 | http://github.com/broofa 30 | -------------------------------------------------------------------------------- /vendor/DocumentUp/vendor/javascript/languages/javascript.js: -------------------------------------------------------------------------------- 1 | /* 2 | Language: Javascript 3 | */ 4 | 5 | hljs.LANGUAGES.javascript = { 6 | defaultMode: { 7 | keywords: { 8 | 'keyword': {'in': 1, 'if': 1, 'for': 1, 'while': 1, 'finally': 1, 'var': 1, 'new': 1, 'function': 1, 'do': 1, 'return': 1, 'void': 1, 'else': 1, 'break': 1, 'catch': 1, 'instanceof': 1, 'with': 1, 'throw': 1, 'case': 1, 'default': 1, 'try': 1, 'this': 1, 'switch': 1, 'continue': 1, 'typeof': 1, 'delete': 1}, 9 | 'literal': {'true': 1, 'false': 1, 'null': 1} 10 | }, 11 | contains: [ 12 | hljs.APOS_STRING_MODE, 13 | hljs.QUOTE_STRING_MODE, 14 | hljs.C_LINE_COMMENT_MODE, 15 | hljs.C_BLOCK_COMMENT_MODE, 16 | hljs.C_NUMBER_MODE, 17 | { // regexp container 18 | begin: '(' + hljs.RE_STARTERS_RE + '|case|return|throw)\\s*', 19 | keywords: {'return': 1, 'throw': 1, 'case': 1}, 20 | contains: [ 21 | hljs.C_LINE_COMMENT_MODE, 22 | hljs.C_BLOCK_COMMENT_MODE, 23 | { 24 | className: 'regexp', 25 | begin: '/', end: '/[gim]*', 26 | contains: [{begin: '\\\\/'}] 27 | } 28 | ], 29 | relevance: 0 30 | }, 31 | { 32 | className: 'function', 33 | begin: '\\bfunction\\b', end: '{', 34 | keywords: {'function': 1}, 35 | contains: [ 36 | { 37 | className: 'title', begin: '[A-Za-z$_][0-9A-Za-z$_]*' 38 | }, 39 | { 40 | className: 'params', 41 | begin: '\\(', end: '\\)', 42 | contains: [ 43 | hljs.APOS_STRING_MODE, 44 | hljs.QUOTE_STRING_MODE, 45 | hljs.C_LINE_COMMENT_MODE, 46 | hljs.C_BLOCK_COMMENT_MODE 47 | ] 48 | } 49 | ] 50 | } 51 | ] 52 | } 53 | }; 54 | -------------------------------------------------------------------------------- /vendor/DocumentUp/vendor/javascript/languages/java.js: -------------------------------------------------------------------------------- 1 | /* 2 | Language: Java 3 | Author: Vsevolod Solovyov 4 | */ 5 | 6 | hljs.LANGUAGES.java = { 7 | defaultMode: { 8 | keywords: {'false': 1, 'synchronized': 1, 'int': 1, 'abstract': 1, 'float': 1, 'private': 1, 'char': 1, 'interface': 1, 'boolean': 1, 'static': 1, 'null': 1, 'if': 1, 'const': 1, 'for': 1, 'true': 1, 'while': 1, 'long': 1, 'throw': 1, 'strictfp': 1, 'finally': 1, 'protected': 1, 'extends': 1, 'import': 1, 'native': 1, 'final': 1, 'implements': 1, 'return': 1, 'void': 1, 'enum': 1, 'else': 1, 'break': 1, 'transient': 1, 'new': 1, 'catch': 1, 'instanceof': 1, 'byte': 1, 'super': 1, 'class': 1, 'volatile': 1, 'case': 1, 'assert': 1, 'short': 1, 'package': 1, 'default': 1, 'double': 1, 'public': 1, 'try': 1, 'this': 1, 'switch': 1, 'continue': 1, 'throws': 1}, 9 | contains: [ 10 | { 11 | className: 'javadoc', 12 | begin: '/\\*\\*', end: '\\*/', 13 | contains: [{ 14 | className: 'javadoctag', begin: '@[A-Za-z]+' 15 | }], 16 | relevance: 10 17 | }, 18 | hljs.C_LINE_COMMENT_MODE, 19 | hljs.C_BLOCK_COMMENT_MODE, 20 | hljs.APOS_STRING_MODE, 21 | hljs.QUOTE_STRING_MODE, 22 | { 23 | className: 'class', 24 | begin: '(class |interface )', end: '{', 25 | keywords: {'class': 1, 'interface': 1}, 26 | illegal: ':', 27 | contains: [ 28 | { 29 | begin: '(implements|extends)', 30 | keywords: {'extends': 1, 'implements': 1}, 31 | relevance: 10 32 | }, 33 | { 34 | className: 'title', 35 | begin: hljs.UNDERSCORE_IDENT_RE 36 | } 37 | ] 38 | }, 39 | hljs.C_NUMBER_MODE, 40 | { 41 | className: 'annotation', begin: '@[A-Za-z]+' 42 | } 43 | ] 44 | } 45 | }; 46 | -------------------------------------------------------------------------------- /vendor/DocumentUp/vendor/javascript/languages/erlang-repl.js: -------------------------------------------------------------------------------- 1 | /* 2 | Language: Erlang REPL 3 | Author: Sergey Ignatov 4 | */ 5 | 6 | hljs.LANGUAGES.erlang_repl = { 7 | defaultMode: { 8 | keywords: { 9 | 'special_functions':{ 10 | 'spawn':10, 11 | 'spawn_link':10, 12 | 'self':2 13 | }, 14 | 'reserved':{ 15 | 'after':1, 16 | 'and':1, 17 | 'andalso':5, 18 | 'band':1, 19 | 'begin':1, 20 | 'bnot':1, 21 | 'bor':1, 22 | 'bsl':1, 23 | 'bsr':1, 24 | 'bxor':1, 25 | 'case':1, 26 | 'catch':0, 27 | 'cond':1, 28 | 'div':1, 29 | 'end':1, 30 | 'fun':0, 31 | 'if':0, 32 | 'let':1, 33 | 'not':0, 34 | 'of':1, 35 | 'or':1, 36 | 'orelse':5, 37 | 'query':1, 38 | 'receive':0, 39 | 'rem':1, 40 | 'try':0, 41 | 'when':1, 42 | 'xor':1 43 | } 44 | }, 45 | contains: [ 46 | { 47 | className: 'input_number', begin: '^[0-9]+> ', 48 | relevance: 10 49 | }, 50 | { 51 | className: 'comment', 52 | begin: '%', end: '$' 53 | }, 54 | hljs.NUMBER_MODE, 55 | hljs.APOS_STRING_MODE, 56 | hljs.QUOTE_STRING_MODE, 57 | { 58 | className: 'constant', begin: '\\?(::)?([A-Z]\\w*(::)?)+' 59 | }, 60 | { 61 | className: 'arrow', begin: '->' 62 | }, 63 | { 64 | className: 'ok', begin: 'ok' 65 | }, 66 | { 67 | className: 'exclamation_mark', begin: '!' 68 | }, 69 | { 70 | className: 'function_or_atom', 71 | begin: '(\\b[a-z\'][a-zA-Z0-9_\']*:[a-z\'][a-zA-Z0-9_\']*)|(\\b[a-z\'][a-zA-Z0-9_\']*)', 72 | relevance: 0 73 | }, 74 | { 75 | className: 'variable', 76 | begin: '[A-Z][a-zA-Z0-9_\']*', 77 | relevance: 0 78 | } 79 | ] 80 | } 81 | }; 82 | -------------------------------------------------------------------------------- /vendor/DocumentUp/vendor/javascript/languages/go.js: -------------------------------------------------------------------------------- 1 | /* 2 | Language: Go 3 | Author: Stephan Kountso aka StepLg 4 | Description: Google go language (golang). For info about language see http://golang.org/ 5 | */ 6 | 7 | hljs.LANGUAGES.go = function(){ 8 | var GO_KEYWORDS = { 9 | 'keyword': { 10 | 'break' : 1, 'default' : 1, 'func' : 1, 'interface' : 1, 'select' : 1, 11 | 'case' : 1, 'map' : 1, 'struct' : 1, 'chan' : 1, 12 | 'else' : 1, 'goto' : 1, 'package' : 1, 'switch' : 1, 'const' : 1, 13 | 'fallthrough' : 1, 'if' : 1, 'range' : 1, 'type' : 1, 'continue' : 1, 14 | 'for' : 1, 'import' : 1, 'return' : 1, 'var' : 1, 'go': 1, 'defer' : 1 15 | }, 16 | 'constant': { 17 | 'true': 1, 'false': 1, 'iota': 1, 'nil': 1 18 | }, 19 | 'typename': { 20 | 'bool': 1, 'byte': 1, 'complex64': 1, 'complex128': 1, 'float32': 1, 21 | 'float64': 1, 'int8': 1, 'int16': 1, 'int32': 1, 'int64': 1, 'string': 1, 22 | 'uint8': 1, 'uint16': 1, 'uint32': 1, 'uint64': 1, 'int': 1, 'uint': 1, 23 | 'uintptr': 1 24 | }, 25 | 'built_in': { 26 | 'append': 1, 'cap': 1, 'close': 1, 'complex': 1, 'copy': 1, 'imag': 1, 27 | 'len': 1, 'make': 1, 'new': 1, 'panic': 1, 'print': 1, 'println': 1, 28 | 'real': 1, 'recover': 1 29 | } 30 | }; 31 | return { 32 | defaultMode: { 33 | keywords: GO_KEYWORDS, 34 | illegal: ' 2 | 3 | 4 | 5 | 6 | Backbone.js Todos 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 |
15 |

Todos

16 | 17 |
18 | 19 |
20 | 21 | 22 |
    23 |
    24 | 25 | 29 | 30 |
    31 | 32 |
    33 | Double-click to edit a todo. 34 |
    35 | 36 |
    37 | Created by 38 |
    39 | Jérôme Gravel-Niquet. 40 |
    Rewritten by: TodoMVC. 41 |
    42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 60 | 61 | 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /vendor/DocumentUp/vendor/javascript/languages/cs.js: -------------------------------------------------------------------------------- 1 | /* 2 | Language: C# 3 | Author: Jason Diamond 4 | */ 5 | 6 | hljs.LANGUAGES.cs = { 7 | defaultMode: { 8 | keywords: { 9 | // Normal keywords. 10 | 'abstract': 1, 'as': 1, 'base': 1, 'bool': 1, 'break': 1, 'byte': 1, 'case': 1, 'catch': 1, 'char': 1, 'checked': 1, 'class': 1, 'const': 1, 'continue': 1, 'decimal': 1, 'default': 1, 'delegate': 1, 'do': 1, 'do': 1, 'double': 1, 'else': 1, 'enum': 1, 'event': 1, 'explicit': 1, 'extern': 1, 'false': 1, 'finally': 1, 'fixed': 1, 'float': 1, 'for': 1, 'foreach': 1, 'goto': 1, 'if': 1, 'implicit': 1, 'in': 1, 'int': 1, 'interface': 1, 'internal': 1, 'is': 1, 'lock': 1, 'long': 1, 'namespace': 1, 'new': 1, 'null': 1, 'object': 1, 'operator': 1, 'out': 1, 'override': 1, 'params': 1, 'private': 1, 'protected': 1, 'public': 1, 'readonly': 1, 'ref': 1, 'return': 1, 'sbyte': 1, 'sealed': 1, 'short': 1, 'sizeof': 1, 'stackalloc': 1, 'static': 1, 'string': 1, 'struct': 1, 'switch': 1, 'this': 1, 'throw': 1, 'true': 1, 'try': 1, 'typeof': 1, 'uint': 1, 'ulong': 1, 'unchecked': 1, 'unsafe': 1, 'ushort': 1, 'using': 1, 'virtual': 1, 'volatile': 1, 'void': 1, 'while': 1, 11 | // Contextual keywords. 12 | 'ascending': 1, 'descending': 1, 'from': 1, 'get': 1, 'group': 1, 'into': 1, 'join': 1, 'let': 1, 'orderby': 1, 'partial': 1, 'select': 1, 'set': 1, 'value': 1, 'var': 1, 'where': 1, 'yield': 1 13 | }, 14 | contains: [ 15 | { 16 | className: 'comment', 17 | begin: '///', end: '$', returnBegin: true, 18 | contains: [ 19 | { 20 | className: 'xmlDocTag', 21 | begin: '///|' 22 | }, 23 | { 24 | className: 'xmlDocTag', 25 | begin: '' 26 | } 27 | ] 28 | }, 29 | hljs.C_LINE_COMMENT_MODE, 30 | hljs.C_BLOCK_COMMENT_MODE, 31 | { 32 | className: 'string', 33 | begin: '@"', end: '"', 34 | contains: [{begin: '""'}] 35 | }, 36 | hljs.APOS_STRING_MODE, 37 | hljs.QUOTE_STRING_MODE, 38 | hljs.C_NUMBER_MODE 39 | ] 40 | } 41 | }; 42 | -------------------------------------------------------------------------------- /vendor/DocumentUp/vendor/javascript/languages/php.js: -------------------------------------------------------------------------------- 1 | /* 2 | Language: PHP 3 | Author: Victor Karamzin 4 | */ 5 | 6 | hljs.LANGUAGES.php = { 7 | case_insensitive: true, 8 | defaultMode: { 9 | keywords: { 10 | 'and': 1, 'include_once': 1, 'list': 1, 'abstract': 1, 'global': 1, 11 | 'private': 1, 'echo': 1, 'interface': 1, 'as': 1, 'static': 1, 12 | 'endswitch': 1, 'array': 1, 'null': 1, 'if': 1, 'endwhile': 1, 'or': 1, 13 | 'const': 1, 'for': 1, 'endforeach': 1, 'self': 1, 'var': 1, 'while': 1, 14 | 'isset': 1, 'public': 1, 'protected': 1, 'exit': 1, 'foreach': 1, 15 | 'throw': 1, 'elseif': 1, 'extends': 1, 'include': 1, '__FILE__': 1, 16 | 'empty': 1, 'require_once': 1, 'function': 1, 'do': 1, 'xor': 1, 17 | 'return': 1, 'implements': 1, 'parent': 1, 'clone': 1, 'use': 1, 18 | '__CLASS__': 1, '__LINE__': 1, 'else': 1, 'break': 1, 'print': 1, 19 | 'eval': 1, 'new': 1, 'catch': 1, '__METHOD__': 1, 'class': 1, 'case': 1, 20 | 'exception': 1, 'php_user_filter': 1, 'default': 1, 'die': 1, 21 | 'require': 1, '__FUNCTION__': 1, 'enddeclare': 1, 'final': 1, 'try': 1, 22 | 'this': 1, 'switch': 1, 'continue': 1, 'endfor': 1, 'endif': 1, 23 | 'declare': 1, 'unset': 1, 'true': 1, 'false': 1, 'namespace': 1 24 | }, 25 | contains: [ 26 | hljs.C_LINE_COMMENT_MODE, 27 | hljs.HASH_COMMENT_MODE, 28 | { 29 | className: 'comment', 30 | begin: '/\\*', end: '\\*/', 31 | contains: [{ 32 | className: 'phpdoc', 33 | begin: '\\s@[A-Za-z]+', 34 | relevance: 10 35 | }] 36 | }, 37 | hljs.C_NUMBER_MODE, 38 | hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}), 39 | hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}), 40 | { 41 | className: 'variable', 42 | begin: '\\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*' 43 | }, 44 | { 45 | className: 'preprocessor', 46 | begin: '<\\?php', 47 | relevance: 10 48 | }, 49 | { 50 | className: 'preprocessor', 51 | begin: '\\?>' 52 | } 53 | ] 54 | } 55 | }; 56 | -------------------------------------------------------------------------------- /test/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Backbone-Nested Test Suite 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 46 | 47 | 48 |
    49 |
    50 |

    Backbone-Nested Speed Suite

    51 |
    52 | 53 | 54 | -------------------------------------------------------------------------------- /vendor/DocumentUp/vendor/javascript/languages/scala.js: -------------------------------------------------------------------------------- 1 | /* 2 | Language: Scala 3 | Author: Jan Berkel 4 | */ 5 | 6 | hljs.LANGUAGES.scala = function() { 7 | var ANNOTATION = { 8 | className: 'annotation', begin: '@[A-Za-z]+' 9 | }; 10 | var STRING = { 11 | className: 'string', 12 | begin: 'u?r?"""', end: '"""', 13 | relevance: 10 14 | }; 15 | return { 16 | defaultMode: { 17 | keywords: { 'type': 1, 'yield': 1, 'lazy': 1, 'override': 1, 'def': 1, 'with': 1, 'val':1, 'var': 1, 'false': 1, 'true': 1, 'sealed': 1, 'abstract': 1, 'private': 1, 'trait': 1, 'object': 1, 'null': 1, 'if': 1, 'for': 1, 'while': 1, 'throw': 1, 'finally': 1, 'protected': 1, 'extends': 1, 'import': 1, 'final': 1, 'return': 1, 'else': 1, 'break': 1, 'new': 1, 'catch': 1, 'super': 1, 'class': 1, 'case': 1,'package': 1, 'default': 1, 'try': 1, 'this': 1, 'match': 1, 'continue': 1, 'throws': 1}, 18 | contains: [ 19 | { 20 | className: 'javadoc', 21 | begin: '/\\*\\*', end: '\\*/', 22 | contains: [{ 23 | className: 'javadoctag', 24 | begin: '@[A-Za-z]+' 25 | }], 26 | relevance: 10 27 | }, 28 | hljs.C_LINE_COMMENT_MODE, hljs.C_BLOCK_COMMENT_MODE, 29 | hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE, STRING, 30 | { 31 | className: 'class', 32 | begin: '((case )?class |object |trait )', end: '({|$)', 33 | illegal: ':', 34 | keywords: {'case' : 1, 'class': 1, 'trait': 1, 'object': 1}, 35 | contains: [ 36 | { 37 | begin: '(extends|with)', 38 | keywords: {'extends': 1, 'with': 1}, 39 | relevance: 10 40 | }, 41 | { 42 | className: 'title', 43 | begin: hljs.UNDERSCORE_IDENT_RE 44 | }, 45 | { 46 | className: 'params', 47 | begin: '\\(', end: '\\)', 48 | contains: [ 49 | hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE, STRING, 50 | ANNOTATION 51 | ] 52 | } 53 | ] 54 | }, 55 | hljs.C_NUMBER_MODE, 56 | ANNOTATION 57 | ] 58 | } 59 | }; 60 | }(); 61 | -------------------------------------------------------------------------------- /vendor/DocumentUp/vendor/javascript/languages/python.js: -------------------------------------------------------------------------------- 1 | /* 2 | Language: Python 3 | */ 4 | 5 | hljs.LANGUAGES.python = function() { 6 | var STR1 = { 7 | className: 'string', 8 | begin: '(u|b)?r?\'\'\'', end: '\'\'\'', 9 | relevance: 10 10 | }; 11 | var STR2 = { 12 | className: 'string', 13 | begin: '(u|b)?r?"""', end: '"""', 14 | relevance: 10 15 | }; 16 | var STR3 = { 17 | className: 'string', 18 | begin: '(u|r|ur|b|br)\'', end: '\'', 19 | contains: [hljs.BACKSLASH_ESCAPE], 20 | relevance: 10 21 | }; 22 | var STR4 = { 23 | className: 'string', 24 | begin: '(u|r|ur|b|br)"', end: '"', 25 | contains: [hljs.BACKSLASH_ESCAPE], 26 | relevance: 10 27 | }; 28 | var TITLE = { 29 | className: 'title', begin: hljs.UNDERSCORE_IDENT_RE 30 | }; 31 | var PARAMS = { 32 | className: 'params', 33 | begin: '\\(', end: '\\)', 34 | contains: [STR1, STR2, STR3, STR4, hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE] 35 | }; 36 | 37 | return { 38 | defaultMode: { 39 | keywords: { 40 | 'keyword': {'and': 1, 'elif': 1, 'is': 1, 'global': 1, 'as': 1, 'in': 1, 'if': 1, 'from': 1, 'raise': 1, 'for': 1, 'except': 1, 'finally': 1, 'print': 1, 'import': 1, 'pass': 1, 'return': 1, 'exec': 1, 'else': 1, 'break': 1, 'not': 1, 'with': 1, 'class': 1, 'assert': 1, 'yield': 1, 'try': 1, 'while': 1, 'continue': 1, 'del': 1, 'or': 1, 'def': 1, 'lambda': 1, 'nonlocal': 10}, 41 | 'built_in': {'None': 1, 'True': 1, 'False': 1, 'Ellipsis': 1, 'NotImplemented': 1} 42 | }, 43 | illegal: '(|\\?)', 44 | contains: [ 45 | hljs.HASH_COMMENT_MODE, 46 | STR1, STR2, STR3, STR4, hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE, 47 | { 48 | className: 'function', 49 | begin: '\\bdef ', end: ':', 50 | illegal: '$', 51 | keywords: {'def': 1}, 52 | contains: [TITLE, PARAMS], 53 | relevance: 10 54 | }, 55 | { 56 | className: 'class', 57 | begin: '\\bclass ', end: ':', 58 | illegal: '[${]', 59 | keywords: {'class': 1}, 60 | contains: [TITLE, PARAMS], 61 | relevance: 10 62 | }, 63 | hljs.C_NUMBER_MODE, 64 | { 65 | className: 'decorator', 66 | begin: '@', end: '$' 67 | } 68 | ] 69 | } 70 | }; 71 | }(); 72 | -------------------------------------------------------------------------------- /vendor/DocumentUp/vendor/javascript/languages/haskell.js: -------------------------------------------------------------------------------- 1 | /* 2 | Language: Haskell 3 | Author: Jeremy Hull 4 | */ 5 | 6 | hljs.LANGUAGES.haskell = function(){ 7 | var LABEL = { 8 | className: 'label', 9 | begin: '\\b[A-Z][\\w\']*', 10 | relevance: 0 11 | }; 12 | var CONTAINER = { 13 | className: 'container', 14 | begin: '\\(', end: '\\)', 15 | contains: [ 16 | {className: 'label', begin: '\\b[A-Z][\\w\\(\\)\\.\']*'}, 17 | {className: 'title', begin: '[_a-z][\\w\']*'} 18 | ] 19 | }; 20 | 21 | return { 22 | defaultMode: { 23 | keywords: { 24 | 'keyword': { 25 | 'let': 1, 'in': 1, 'if': 1, 'then': 1, 'else': 1, 'case': 1, 'of': 1, 26 | 'where': 1, 'do': 1, 'module': 1, 'import': 1, 'hiding': 1, 27 | 'qualified': 1, 'type': 1, 'data': 1, 'newtype': 1, 'deriving': 1, 28 | 'class': 1, 'instance': 1, 'null': 1, 'not': 1, 'as': 1 29 | } 30 | }, 31 | contains: [ 32 | { 33 | className: 'comment', 34 | begin: '--', end: '$' 35 | }, 36 | { 37 | className: 'comment', 38 | begin: '{-', end: '-}' 39 | }, 40 | { 41 | className: 'string', 42 | begin: '\\s+\'', end: '\'', 43 | contains: [hljs.BACKSLASH_ESCAPE], 44 | relevance: 0 45 | }, 46 | hljs.QUOTE_STRING_MODE, 47 | { 48 | className: 'import', 49 | begin: '\\bimport', end: '$', 50 | keywords: {'import': 1, 'qualified': 1, 'as': 1, 'hiding': 1}, 51 | contains: [CONTAINER] 52 | }, 53 | { 54 | className: 'module', 55 | begin: '\\bmodule', end: 'where', 56 | keywords: {'module': 1, 'where': 1}, 57 | contains: [CONTAINER] 58 | }, 59 | { 60 | className: 'class', 61 | begin: '\\b(class|instance|data|(new)?type)', end: '(where|$)', 62 | keywords: {'class': 1, 'where': 1, 'instance': 1,'data': 1,'type': 1,'newtype': 1, 'deriving': 1}, 63 | contains: [LABEL] 64 | }, 65 | hljs.C_NUMBER_MODE, 66 | { 67 | className: 'shebang', 68 | begin: '#!\\/usr\\/bin\\/env\ runhaskell', end: '$' 69 | }, 70 | LABEL, 71 | { 72 | className: 'title', begin: '^[_a-z][\\w\']*' 73 | } 74 | ] 75 | } 76 | }; 77 | }(); 78 | -------------------------------------------------------------------------------- /vendor/DocumentUp/vendor/javascript/languages/cmake.js: -------------------------------------------------------------------------------- 1 | /* 2 | Language: CMake 3 | Description: CMake is an open-source cross-platform system for build automation. 4 | Author: Igor Kalnitsky 5 | Website: http://kalnitsky.org.ua/ 6 | */ 7 | 8 | hljs.LANGUAGES.cmake = { 9 | case_insensitive: true, 10 | defaultMode: { 11 | keywords: { 12 | 'add_custom_command': 2, 'add_custom_target': 2, 'add_definitions': 2, 'add_dependencies': 2, 'add_executable': 2, 'add_library': 2, 'add_subdirectory': 2, 'add_executable': 2, 'add_library': 2, 'add_subdirectory': 2, 'add_test': 2, 'aux_source_directory': 2, 'break': 1, 'build_command': 2, 'cmake_minimum_required': 3, 'cmake_policy': 3, 'configure_file': 1, 'create_test_sourcelist': 1, 'define_property': 1, 'else': 1, 'elseif': 1, 'enable_language': 2, 'enable_testing': 2, 'endforeach': 1, 'endfunction': 1, 'endif': 1, 'endmacro': 1, 'endwhile': 1, 'execute_process': 2, 'export': 1, 'find_file': 1, 'find_library': 2, 'find_package': 2, 'find_path': 1, 'find_program': 1, 'fltk_wrap_ui': 2, 'foreach': 1, 'function': 1, 'get_cmake_property': 3, 'get_directory_property': 1, 'get_filename_component': 1, 'get_property': 1, 'get_source_file_property': 1, 'get_target_property': 1, 'get_test_property': 1, 'if': 1, 'include': 1, 'include_directories': 2, 'include_external_msproject': 1, 'include_regular_expression': 2, 'install': 1, 'link_directories': 1, 'load_cache': 1, 'load_command': 1, 'macro': 1, 'mark_as_advanced': 1, 'message': 1, 'option': 1, 'output_required_files': 1, 'project': 1, 'qt_wrap_cpp': 2, 'qt_wrap_ui': 2, 'remove_definitions': 2, 'return': 1, 'separate_arguments': 1, 'set': 1, 'set_directory_properties': 1, 'set_property': 1, 'set_source_files_properties': 1, 'set_target_properties': 1, 'set_tests_properties': 1, 'site_name': 1, 'source_group': 1, 'string': 1, 'target_link_libraries': 2, 'try_compile': 2, 'try_run': 2, 'unset': 1, 'variable_watch': 2, 'while': 1, 'build_name': 1, 'exec_program': 1, 'export_library_dependencies': 1, 'install_files': 1, 'install_programs': 1, 'install_targets': 1, 'link_libraries': 1, 'make_directory': 1, 'remove': 1, 'subdir_depends': 1, 'subdirs': 1, 'use_mangled_mesa': 1, 'utility_source': 1, 'variable_requires': 1, 'write_file': 1 }, 13 | 14 | contains: [ 15 | { 16 | className: 'envvar', 17 | begin: '\\${', end: '}' 18 | }, 19 | hljs.HASH_COMMENT_MODE, 20 | hljs.QUOTE_STRING_MODE, 21 | hljs.NUMBER_MODE 22 | ] 23 | } 24 | }; 25 | -------------------------------------------------------------------------------- /vendor/DocumentUp/src/stylesheets/github.styl: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | github.com style (c) Vasily Polovnyov 4 | 5 | */ 6 | 7 | pre code { 8 | display: block; padding: 0.5em; 9 | color: #000; 10 | background: #f8f8ff; 11 | padding: 20px; 12 | //box-shadow: rgba(black, 0.1) 0 1px 3px 0 inset; 13 | border: 1px solid #ccc; 14 | overflow-y: auto; 15 | } 16 | 17 | pre .comment, 18 | pre .template_comment, 19 | pre .diff .header, 20 | pre .javadoc { 21 | color: #998; 22 | font-style: italic 23 | } 24 | 25 | pre .keyword, 26 | pre .css .rule .keyword, 27 | pre .winutils, 28 | pre .javascript .title, 29 | pre .lisp .title, 30 | pre .subst { 31 | color: #000; 32 | font-weight: bold 33 | } 34 | 35 | pre .number, 36 | pre .hexcolor { 37 | color: #40a070 38 | } 39 | 40 | pre .string, 41 | pre .tag .value, 42 | pre .phpdoc, 43 | pre .tex .formula { 44 | color: #d14 45 | } 46 | 47 | pre .title, 48 | pre .id { 49 | color: #900; 50 | font-weight: bold 51 | } 52 | 53 | pre .javascript .title, 54 | pre .lisp .title, 55 | pre .subst { 56 | font-weight: normal 57 | } 58 | 59 | pre .class .title, 60 | pre .haskell .label, 61 | pre .tex .command { 62 | color: #458; 63 | font-weight: bold 64 | } 65 | 66 | pre .tag, 67 | pre .tag .title, 68 | pre .rules .property, 69 | pre .django .tag .keyword { 70 | color: #000080; 71 | font-weight: normal 72 | } 73 | 74 | pre .attribute, 75 | pre .variable, 76 | pre .instancevar, 77 | pre .lisp .body { 78 | color: #008080 79 | } 80 | 81 | pre .regexp { 82 | color: #009926 83 | } 84 | 85 | pre .class { 86 | color: #458; 87 | font-weight: bold 88 | } 89 | 90 | pre .symbol, 91 | pre .ruby .symbol .string, 92 | pre .ruby .symbol .keyword, 93 | pre .ruby .symbol .keymethods, 94 | pre .lisp .keyword, 95 | pre .tex .special, 96 | pre .input_number { 97 | color: #990073 98 | } 99 | 100 | pre .builtin, 101 | pre .built_in, 102 | pre .lisp .title { 103 | color: #0086b3 104 | } 105 | 106 | pre .preprocessor, 107 | pre .pi, 108 | pre .doctype, 109 | pre .shebang, 110 | pre .cdata { 111 | color: #999; 112 | font-weight: bold 113 | } 114 | 115 | pre .deletion { 116 | background: #fdd 117 | } 118 | 119 | pre .addition { 120 | background: #dfd 121 | } 122 | 123 | pre .diff .change { 124 | background: #0086b3 125 | } 126 | 127 | pre .chunk { 128 | color: #aaa 129 | } 130 | 131 | pre .tex .formula { 132 | opacity: 0.5; 133 | } 134 | -------------------------------------------------------------------------------- /vendor/qunit/Gruntfile.js: -------------------------------------------------------------------------------- 1 | /*jshint node:true */ 2 | module.exports = function( grunt ) { 3 | 4 | grunt.loadNpmTasks( "grunt-git-authors" ); 5 | grunt.loadNpmTasks( "grunt-contrib-jshint" ); 6 | grunt.loadNpmTasks( "grunt-contrib-qunit" ); 7 | grunt.loadNpmTasks( "grunt-contrib-watch" ); 8 | 9 | grunt.initConfig({ 10 | qunit: { 11 | qunit: [ 12 | "test/index.html", 13 | "test/async.html", 14 | "test/logs.html", 15 | "test/setTimeout.html" 16 | ] 17 | }, 18 | jshint: { 19 | options: { 20 | jshintrc: ".jshintrc" 21 | }, 22 | gruntfile: [ "Gruntfile.js" ], 23 | qunit: [ "qunit/**/*.js" ], 24 | addons: { 25 | options: { 26 | jshintrc: "addons/.jshintrc" 27 | }, 28 | files: { 29 | src: [ "addons/**/*.js" ] 30 | } 31 | }, 32 | tests: { 33 | options: { 34 | jshintrc: "test/.jshintrc" 35 | }, 36 | files: { 37 | src: [ "test/**/*.js" ] 38 | } 39 | } 40 | }, 41 | watch: { 42 | files: [ "*", ".jshintrc", "{addons,qunit,test}/**/{*,.*}" ], 43 | tasks: "default" 44 | } 45 | }); 46 | 47 | grunt.registerTask( "build-git", function( sha ) { 48 | function processor( content ) { 49 | var tagline = " - A JavaScript Unit Testing Framework"; 50 | return content.replace( tagline, "-" + sha + " " + grunt.template.today("isoDate") + tagline ); 51 | } 52 | grunt.file.copy( "qunit/qunit.css", "dist/qunit-git.css", { 53 | process: processor 54 | }); 55 | grunt.file.copy( "qunit/qunit.js", "dist/qunit-git.js", { 56 | process: processor 57 | }); 58 | }); 59 | 60 | grunt.registerTask( "testswarm", function( commit, configFile ) { 61 | var testswarm = require( "testswarm" ), 62 | config = grunt.file.readJSON( configFile ).qunit, 63 | runs = {}, 64 | done = this.async(); 65 | ["index", "async", "setTimeout"].forEach(function (suite) { 66 | runs[suite] = config.testUrl + commit + "/test/" + suite + ".html"; 67 | }); 68 | testswarm.createClient( { 69 | url: config.swarmUrl, 70 | pollInterval: 10000, 71 | timeout: 1000 * 60 * 30 72 | } ) 73 | .addReporter( testswarm.reporters.cli ) 74 | .auth( { 75 | id: config.authUsername, 76 | token: config.authToken 77 | } ) 78 | .addjob( 79 | { 80 | name: "QUnit commit #" + commit.substr( 0, 10 ) + "", 81 | runs: runs, 82 | browserSets: config.browserSets 83 | }, function( err, passed ) { 84 | if ( err ) { 85 | grunt.log.error( err ); 86 | } 87 | done( passed ); 88 | } 89 | ); 90 | }); 91 | 92 | grunt.registerTask("default", ["jshint", "qunit"]); 93 | 94 | }; 95 | -------------------------------------------------------------------------------- /vendor/DocumentUp/vendor/javascript/languages/coffee.js: -------------------------------------------------------------------------------- 1 | /* 2 | Language: CoffeeScript 3 | Author: Dmytrii Nagirniak (@dnagir) 4 | */ 5 | 6 | hljs.LANGUAGES.coffee = function() { 7 | var keywords = { 8 | 'keyword': { 9 | // JS keywords 10 | 'in': 1, 'if': 1, 'for': 1, 'while': 1, 'finally': 1, 11 | 'new': 1, 'do': 1, 'return': 1, 'else': 1, 12 | 'break': 1, 'catch': 1, 'instanceof': 1, 'throw': 1, 13 | 'try': 1, 'this': 1, 'switch': 1, 'continue': 1, 'typeof': 1, 14 | 'delete': 1, 'return': 1, 'debugger': 1, 15 | 'class': 1, 'extends': 1, 'super': 1, 16 | // Coffee 17 | 'then': 1, 'unless': 1, 'until': 1, 'loop': 2, 'of': 2, 'by': 1, 'when': 2, 18 | 'and': 1, 'or': 1, 'is': 1, 'isnt': 2, 'not': 1 19 | }, 20 | 'literal': { 21 | // JS 22 | 'true': 1, 'false': 1, 'null': 1, 'undefined': 1, 23 | // Coffee 24 | 'yes': 1, 'no': 1, 'on': 1, 'off': 1 25 | }, 26 | 'reserved': { 27 | 'case': 1, 'default': 1, 'function': 1, 'var': 1, 'void': 1, 'with': 1, 28 | 'const': 1, 'let': 1, 'enum': 1, 'export': 1, 'import': 1, 'native': 1, 29 | '__hasProp': 1 , '__extends': 1 , '__slice': 1 , '__bind': 1 , '__indexOf': 1 30 | } 31 | }; 32 | 33 | var String1 = { 34 | className: 'string', 35 | begin: "'", end: "'", 36 | relevance: 0 37 | }; 38 | 39 | 40 | var SUBST = { 41 | className: 'subst', 42 | begin: '#\\{', end: '}', 43 | keywords: keywords, 44 | contains: [hljs.C_NUMBER_MODE ] 45 | }; 46 | 47 | var String2 = { 48 | className: 'string', 49 | begin: '"', end: '"', 50 | relevance: 0, 51 | contains: [hljs.BACKSLASH_ESCAPE, SUBST] 52 | }; 53 | 54 | var Arrow = { 55 | className: 'function', 56 | begin: '(->|=>)', end: hljs.IMMEIDATE_RE, 57 | relevance: 10 58 | }; 59 | var FormalArgs = { 60 | className: 'params', 61 | begin: "\\(", 62 | end: '\\)', 63 | // TODO: Do not use recursive keywords and contains here as it should be on formal args ONLY 64 | keywords: keywords, 65 | contains: [hljs.C_NUMBER_MODE, String1, String2] 66 | }; 67 | var CommentSharpMultiline = { 68 | className: 'comment', 69 | begin: '###', 70 | end: '###', 71 | relevance: 5 72 | }; 73 | 74 | return { 75 | defaultMode: { 76 | keywords: keywords, 77 | contains: [ 78 | CommentSharpMultiline, 79 | hljs.C_NUMBER_MODE, 80 | hljs.HASH_COMMENT_MODE, 81 | String1, String2, 82 | FormalArgs, 83 | Arrow 84 | ] 85 | } 86 | }; 87 | }(); -------------------------------------------------------------------------------- /vendor/DocumentUp/vendor/javascript/languages/cpp.js: -------------------------------------------------------------------------------- 1 | /* 2 | Language: C++ 3 | */ 4 | 5 | hljs.LANGUAGES.cpp = function(){ 6 | var CPP_KEYWORDS = { 7 | 'keyword': { 8 | 'false': 1, 'int': 1, 'float': 1, 'while': 1, 'private': 1, 'char': 1, 9 | 'catch': 1, 'export': 1, 'virtual': 1, 'operator': 2, 'sizeof': 2, 10 | 'dynamic_cast': 2, 'typedef': 2, 'const_cast': 2, 'const': 1, 11 | 'struct': 1, 'for': 1, 'static_cast': 2, 'union': 1, 'namespace': 1, 12 | 'unsigned': 1, 'long': 1, 'throw': 1, 'volatile': 2, 'static': 1, 13 | 'protected': 1, 'bool': 1, 'template': 1, 'mutable': 1, 'if': 1, 14 | 'public': 1, 'friend': 2, 'do': 1, 'return': 1, 'goto': 1, 'auto': 1, 15 | 'void': 2, 'enum': 1, 'else': 1, 'break': 1, 'new': 1, 'extern': 1, 16 | 'using': 1, 'true': 1, 'class': 1, 'asm': 1, 'case': 1, 'typeid': 1, 17 | 'short': 1, 'reinterpret_cast': 2, 'default': 1, 'double': 1, 18 | 'register': 1, 'explicit': 1, 'signed': 1, 'typename': 1, 'try': 1, 19 | 'this': 1, 'switch': 1, 'continue': 1, 'wchar_t': 1, 'inline': 1, 20 | 'delete': 1, 'alignof': 1, 'char16_t': 1, 'char32_t': 1, 'constexpr': 1, 21 | 'decltype': 1, 'noexcept': 1, 'nullptr': 1, 'static_assert': 1, 22 | 'thread_local': 1 23 | }, 24 | 'built_in': { 25 | 'std': 1, 'string': 1, 'cin': 1, 'cout': 1, 'cerr': 1, 'clog': 1, 26 | 'stringstream': 1, 'istringstream': 1, 'ostringstream': 1, 'auto_ptr': 1, 27 | 'deque': 1, 'list': 1, 'queue': 1, 'stack': 1, 'vector': 1, 'map': 1, 28 | 'set': 1, 'bitset': 1, 'multiset': 1, 'multimap': 1, 'unordered_set': 1, 29 | 'unordered_map': 1, 'unordered_multiset': 1, 'unordered_multimap': 1, 30 | 'array': 1, 'shared_ptr': 1 31 | } 32 | }; 33 | var STL_CONTAINER = { 34 | className: 'stl_container', 35 | begin: '\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<', end: '>', 36 | keywords: CPP_KEYWORDS, 37 | relevance: 10 38 | }; 39 | STL_CONTAINER.contains = [STL_CONTAINER]; 40 | return { 41 | defaultMode: { 42 | keywords: CPP_KEYWORDS, 43 | illegal: ' 4 | */ 5 | 6 | hljs.LANGUAGES.lua = function() { 7 | var OPENING_LONG_BRACKET = '\\[=*\\['; 8 | var CLOSING_LONG_BRACKET = '\\]=*\\]'; 9 | var LONG_BRACKETS = { 10 | begin: OPENING_LONG_BRACKET, end: CLOSING_LONG_BRACKET 11 | }; 12 | LONG_BRACKETS.contains = [LONG_BRACKETS]; 13 | var COMMENT1 = { 14 | className: 'comment', 15 | begin: '--(?!' + OPENING_LONG_BRACKET + ')', end: '$' 16 | }; 17 | var COMMENT2 = { 18 | className: 'comment', 19 | begin: '--' + OPENING_LONG_BRACKET, end: CLOSING_LONG_BRACKET, 20 | contains: [LONG_BRACKETS], 21 | relevance: 10 22 | }; 23 | return { 24 | defaultMode: { 25 | lexems: hljs.UNDERSCORE_IDENT_RE, 26 | keywords: { 27 | 'keyword': { 28 | 'and': 1, 'break': 1, 'do': 1, 'else': 1, 'elseif': 1, 'end': 1, 29 | 'false': 1, 'for': 1, 'if': 1, 'in': 1, 'local': 1, 'nil': 1, 30 | 'not': 1, 'or': 1, 'repeat': 1, 'return': 1, 'then': 1, 'true': 1, 31 | 'until': 1, 'while': 1 32 | }, 33 | 'built_in': { 34 | '_G': 1, '_VERSION': 1, 'assert': 1, 'collectgarbage': 1, 'dofile': 1, 35 | 'error': 1, 'getfenv': 1, 'getmetatable': 1, 'ipairs': 1, 'load': 1, 36 | 'loadfile': 1, 'loadstring': 1, 'module': 1, 'next': 1, 'pairs': 1, 37 | 'pcall': 1, 'print': 1, 'rawequal': 1, 'rawget': 1, 'rawset': 1, 38 | 'require': 1, 'select': 1, 'setfenv': 1, 'setmetatable': 1, 39 | 'tonumber': 1, 'tostring': 1, 'type': 1, 'unpack': 1, 'xpcall': 1, 40 | 'coroutine': 1, 'debug': 1, 'io': 1, 'math': 1, 'os': 1, 'package': 1, 41 | 'string': 1, 'table': 1 42 | } 43 | }, 44 | contains: [ 45 | COMMENT1, COMMENT2, 46 | { 47 | className: 'function', 48 | begin: '\\bfunction\\b', end: '\\)', 49 | keywords: {'function': 1}, 50 | contains: [ 51 | { 52 | className: 'title', 53 | begin: '([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*' 54 | }, 55 | { 56 | className: 'params', 57 | begin: '\\(', endsWithParent: true, 58 | contains: [COMMENT1, COMMENT2] 59 | }, 60 | COMMENT1, COMMENT2 61 | ] 62 | }, 63 | hljs.C_NUMBER_MODE, 64 | hljs.APOS_STRING_MODE, 65 | hljs.QUOTE_STRING_MODE, 66 | { 67 | className: 'string', 68 | begin: OPENING_LONG_BRACKET, end: CLOSING_LONG_BRACKET, 69 | contains: [LONG_BRACKETS], 70 | relevance: 10 71 | } 72 | ] 73 | } 74 | }; 75 | }(); 76 | -------------------------------------------------------------------------------- /vendor/DocumentUp/vendor/javascript/languages/lisp.js: -------------------------------------------------------------------------------- 1 | /* 2 | Language: Lisp 3 | Description: Generic lisp syntax 4 | Author: Vasily Polovnyov 5 | */ 6 | 7 | hljs.LANGUAGES.lisp = function(){ 8 | var LISP_IDENT_RE = '[a-zA-Z_\\-\\+\\*\\/\\<\\=\\>\\&\\#][a-zA-Z0-9_\\-\\+\\*\\/\\<\\=\\>\\&\\#]*'; 9 | var LISP_SIMPLE_NUMBER_RE = '(\\-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s)(\\+|\\-)?\\d+)?'; 10 | var LITERAL = { 11 | className: 'literal', 12 | begin: '\\b(t{1}|nil)\\b' 13 | }; 14 | var NUMBER1 = { 15 | className: 'number', begin: LISP_SIMPLE_NUMBER_RE 16 | }; 17 | var NUMBER2 = { 18 | className: 'number', begin: '#b[0-1]+(/[0-1]+)?' 19 | }; 20 | var NUMBER3 = { 21 | className: 'number', begin: '#o[0-7]+(/[0-7]+)?' 22 | }; 23 | var NUMBER4 = { 24 | className: 'number', begin: '#x[0-9a-f]+(/[0-9a-f]+)?' 25 | }; 26 | var NUMBER5 = { 27 | className: 'number', begin: '#c\\(' + LISP_SIMPLE_NUMBER_RE + ' +' + LISP_SIMPLE_NUMBER_RE, end: '\\)' 28 | }; 29 | var STRING = { 30 | className: 'string', 31 | begin: '"', end: '"', 32 | contains: [hljs.BACKSLASH_ESCAPE], 33 | relevance: 0 34 | }; 35 | var COMMENT = { 36 | className: 'comment', 37 | begin: ';', end: '$' 38 | }; 39 | var VARIABLE = { 40 | className: 'variable', 41 | begin: '\\*', end: '\\*' 42 | }; 43 | var KEYWORD = { 44 | className: 'keyword', 45 | begin: '[:&]' + LISP_IDENT_RE 46 | }; 47 | var QUOTED_LIST = { 48 | begin: '\\(', end: '\\)' 49 | }; 50 | QUOTED_LIST.contains = [QUOTED_LIST, LITERAL, NUMBER1, NUMBER2, NUMBER3, NUMBER4, NUMBER5, STRING]; 51 | var QUOTED1 = { 52 | className: 'quoted', 53 | begin: '[\'`]\\(', end: '\\)', 54 | contains: [NUMBER1, NUMBER2, NUMBER3, NUMBER4, NUMBER5, STRING, VARIABLE, KEYWORD, QUOTED_LIST] 55 | }; 56 | var QUOTED2 = { 57 | className: 'quoted', 58 | begin: '\\(quote ', end: '\\)', 59 | keywords: {'title': {'quote': 1}}, 60 | contains: [NUMBER1, NUMBER2, NUMBER3, NUMBER4, NUMBER5, STRING, VARIABLE, KEYWORD, QUOTED_LIST] 61 | }; 62 | var LIST = { 63 | className: 'list', 64 | begin: '\\(', end: '\\)' 65 | }; 66 | var BODY = { 67 | className: 'body', 68 | endsWithParent: true, excludeEnd: true 69 | }; 70 | LIST.contains = [{className: 'title', begin: LISP_IDENT_RE}, BODY]; 71 | BODY.contains = [QUOTED1, QUOTED2, LIST, LITERAL, NUMBER1, NUMBER2, NUMBER3, NUMBER4, NUMBER5, STRING, COMMENT, VARIABLE, KEYWORD]; 72 | 73 | return { 74 | case_insensitive: true, 75 | defaultMode: { 76 | illegal: '[^\\s]', 77 | contains: [ 78 | LITERAL, 79 | NUMBER1, NUMBER2, NUMBER3, NUMBER4, NUMBER5, 80 | STRING, 81 | COMMENT, 82 | QUOTED1, QUOTED2, 83 | LIST 84 | ] 85 | } 86 | }; 87 | }(); 88 | -------------------------------------------------------------------------------- /vendor/DocumentUp/vendor/javascript/languages/xml.js: -------------------------------------------------------------------------------- 1 | /* 2 | Language: HTML, XML 3 | */ 4 | 5 | hljs.LANGUAGES.xml = function(){ 6 | var XML_IDENT_RE = '[A-Za-z0-9\\._:-]+'; 7 | var TAG_INTERNALS = { 8 | endsWithParent: true, 9 | contains: [ 10 | { 11 | className: 'attribute', 12 | begin: XML_IDENT_RE, 13 | relevance: 0 14 | }, 15 | { 16 | begin: '="', returnBegin: true, end: '"', 17 | contains: [{ 18 | className: 'value', 19 | begin: '"', endsWithParent: true 20 | }] 21 | }, 22 | { 23 | begin: '=\'', returnBegin: true, end: '\'', 24 | contains: [{ 25 | className: 'value', 26 | begin: '\'', endsWithParent: true 27 | }] 28 | }, 29 | { 30 | begin: '=', 31 | contains: [{ 32 | className: 'value', 33 | begin: '[^\\s/>]+' 34 | }] 35 | } 36 | ] 37 | }; 38 | return { 39 | case_insensitive: true, 40 | defaultMode: { 41 | contains: [ 42 | { 43 | className: 'pi', 44 | begin: '<\\?', end: '\\?>', 45 | relevance: 10 46 | }, 47 | { 48 | className: 'doctype', 49 | begin: '', 50 | relevance: 10, 51 | contains: [{begin: '\\[', end: '\\]'}] 52 | }, 53 | { 54 | className: 'comment', 55 | begin: '', 56 | relevance: 10 57 | }, 58 | { 59 | className: 'cdata', 60 | begin: '<\\!\\[CDATA\\[', end: '\\]\\]>', 61 | relevance: 10 62 | }, 63 | { 64 | className: 'tag', 65 | begin: '', 66 | keywords: {'title': {'style': 1}}, 67 | contains: [TAG_INTERNALS], 68 | starts: { 69 | className: 'css', 70 | end: '', returnEnd: true, 71 | subLanguage: 'css' 72 | } 73 | }, 74 | { 75 | className: 'tag', 76 | begin: '', 77 | keywords: {'title': {'script': 1}}, 78 | contains: [TAG_INTERNALS], 79 | starts: { 80 | className: 'javascript', 81 | end: '', returnEnd: true, 82 | subLanguage: 'javascript' 83 | } 84 | }, 85 | { 86 | className: 'vbscript', 87 | begin: '<%', end: '%>', 88 | subLanguage: 'vbscript' 89 | }, 90 | { 91 | className: 'tag', 92 | begin: '', 93 | contains: [ 94 | { 95 | className: 'title', begin: '[^ />]+' 96 | }, 97 | TAG_INTERNALS 98 | ] 99 | } 100 | ] 101 | } 102 | }; 103 | }(); 104 | -------------------------------------------------------------------------------- /vendor/qunit/README.md: -------------------------------------------------------------------------------- 1 | [![Build Status](http://jenkins.jquery.com/job/QUnit/badge/icon)](http://jenkins.jquery.com/job/QUnit/) 2 | 3 | # [QUnit](http://qunitjs.com) - A JavaScript Unit Testing Framework. 4 | 5 | QUnit is a powerful, easy-to-use, JavaScript unit testing framework. It's used by the jQuery 6 | project to test its code and plugins but is capable of testing any generic 7 | JavaScript code (and even capable of testing JavaScript code on the server-side). 8 | 9 | QUnit is especially useful for regression testing: Whenever a bug is reported, 10 | write a test that asserts the existence of that particular bug. Then fix it and 11 | commit both. Every time you work on the code again, run the tests. If the bug 12 | comes up again - a regression - you'll spot it immediately and know how to fix 13 | it, because you know what code you just changed. 14 | 15 | Having good unit test coverage makes safe refactoring easy and cheap. You can 16 | run the tests after each small refactoring step and always know what change 17 | broke something. 18 | 19 | QUnit is similar to other unit testing frameworks like JUnit, but makes use of 20 | the features JavaScript provides and helps with testing code in the browser, e.g. 21 | with its stop/start facilities for testing asynchronous code. 22 | 23 | If you are interested in helping developing QUnit, you are in the right place. 24 | For related discussions, visit the 25 | [QUnit and Testing forum](http://forum.jquery.com/qunit-and-testing). 26 | 27 | ## Development 28 | 29 | To submit patches, fork the repository, create a branch for the change. Then implement 30 | the change, run `grunt` to lint and test it, then commit, push and create a pull request. 31 | 32 | Include some background for the change in the commit message and `Fixes #nnn`, referring 33 | to the issue number you're addressing. 34 | 35 | To run `grunt`, you need `node` and `npm`, then `npm install grunt -g`. That gives you a global 36 | grunt binary. For additional grunt tasks, also run `npm install`. 37 | 38 | ## Releases 39 | 40 | Install git-extras and run `git changelog` to update History.md. Clean up the 41 | changelog, removing merge commits or whitespace cleanups. 42 | 43 | Update qunit/qunit.js|css and package.json to the release version, commit and 44 | tag (Put the 'v' in front of the tag, e.g. `v1.8.0`), update them again to 45 | the next version, commit and push commits and tags: 46 | 47 | git push --tags origin master 48 | 49 | To upload to code.jquery.com (replace $version accordingly), ssh to code.origin.jquery.com: 50 | 51 | cp qunit/qunit.js /var/www/html/code.jquery.com/qunit/qunit-$version.js 52 | cp qunit/qunit.css /var/www/html/code.jquery.com/qunit/qunit-$version.css 53 | 54 | Then update /var/www/html/code.jquery.com/index.html and purge it with: 55 | 56 | curl -s http://code.origin.jquery.com/?reload 57 | 58 | Update web-base-template to link to those files for qunitjs.com. 59 | 60 | Publish to npm via 61 | 62 | npm publish 63 | -------------------------------------------------------------------------------- /vendor/sinon-qunit/test/sinon-qunit-test.js: -------------------------------------------------------------------------------- 1 | /*jslint onevar: false*/ 2 | /*global testCase, QUnit, assert, sinon, test*/ 3 | testCase("SinonQUnitTest", { 4 | setUp: function () { 5 | sinon.spy(QUnit, "ok"); 6 | }, 7 | 8 | tearDown: function () { 9 | if (sinon.test.restore) { 10 | sinon.test.restore(); 11 | } 12 | 13 | QUnit.originalTest.callCount = 0; 14 | QUnit.originalTest.args = []; 15 | QUnit.ok.restore(); 16 | }, 17 | 18 | "should fail through ok": function () { 19 | sinon.assert.fail("Uh-oh!"); 20 | 21 | assert(QUnit.ok.calledOnce); 22 | assert(QUnit.ok.calledWithExactly(false, "Uh-oh!")); 23 | }, 24 | 25 | "should pass through ok": function () { 26 | sinon.assert.pass("calledOnce"); 27 | 28 | assert(QUnit.ok.calledOnce); 29 | assert(QUnit.ok.calledWithExactly(true, "calledOnce")); 30 | }, 31 | 32 | "should pass callback to sinon.test": function () { 33 | sinon.spy(sinon, "test"); 34 | var func = function () {}; 35 | test("Test", func); 36 | 37 | assert(sinon.test.calledOnce); 38 | assert(sinon.test.calledWith(func)); 39 | }, 40 | 41 | "should pass name and sandboxed callback to QUnit": function () { 42 | var sandboxed = function () {}; 43 | sinon.stub(sinon, "test").returns(sandboxed); 44 | QUnit.test("Test", function () {}); 45 | 46 | assert(QUnit.originalTest.calledOnce); 47 | assert(QUnit.originalTest.calledWith("Test", null, sandboxed, undefined)); 48 | }, 49 | 50 | "should pass name, expected and sandboxed callback to QUnit": function () { 51 | var sandboxed = function () {}; 52 | sinon.stub(sinon, "test").returns(sandboxed); 53 | QUnit.test("Test This", 23, function () {}); 54 | 55 | assert(QUnit.originalTest.calledWith("Test This", 23, sandboxed, undefined)); 56 | }, 57 | 58 | "should pass name, env and sandboxed callback to QUnit": function () { 59 | var sandboxed = function () {}; 60 | var env = { id: 42 }; 61 | sinon.stub(sinon, "test").returns(sandboxed); 62 | QUnit.test("Test This", env, function () {}); 63 | 64 | assert(QUnit.originalTest.calledWith("Test This", env, sandboxed, undefined)); 65 | }, 66 | 67 | "should pass name, env, sandboxed callback and async to QUnit": function () { 68 | var sandboxed = function () {}; 69 | var env = { id: 42 }; 70 | sinon.stub(sinon, "test").returns(sandboxed); 71 | QUnit.test("Test This", env, function () {}, true); 72 | 73 | assert(QUnit.originalTest.calledWith("Test This", env, sandboxed, true)); 74 | }, 75 | 76 | "should pass name, expected, sandboxed callback and async to QUnit": function () { 77 | var sandboxed = function () {}; 78 | sinon.stub(sinon, "test").returns(sandboxed); 79 | QUnit.test("Test This", 42, function () {}, true); 80 | 81 | assert(QUnit.originalTest.calledWith("Test This", 42, sandboxed, true)); 82 | } 83 | }); -------------------------------------------------------------------------------- /vendor/qunit/AUTHORS.txt: -------------------------------------------------------------------------------- 1 | Jörn Zaefferer 2 | Ariel Flesler 3 | Scott González 4 | Richard Worth 5 | Philippe Rathé 6 | John Resig 7 | Will Moffat 8 | Jan Kassens 9 | Ziling Zhao 10 | Ryan Szulczewski 11 | Chris Lloyd 12 | Louis-Rémi Babé 13 | Jake Archibald 14 | Frances Berriman 15 | Rune Halvorsen 16 | Chris Thatcher 17 | Fábio Rehm 18 | Leon Sorokin 19 | Douglas Neiner 20 | Paul Elliott 21 | Nikita Vasilyev 22 | Benjamin Lee 23 | Paul Irish 24 | Oleg Slobodskoi 25 | Anton Matzneller 26 | Aurélien Bombo 27 | Mathias Bynens 28 | Erik Vold 29 | Wesley Walser 30 | Rob Kinninmont 31 | Marc Portier 32 | Michael Righi 33 | Timo Tijhof 34 | Jan Alonzo 35 | Daniel Trebbien 36 | Bob Fanger 37 | Markus Messner-Chaney 38 | Trevor Parscal 39 | Ashar Voultoiz 40 | Jimmy Mabey 41 | Domenic Denicola 42 | Mike Sherov 43 | Seong-A Kong 44 | Graham Conzett 45 | Niall Smart 46 | Johan Sörlin 47 | Gijs Kruitbosch 48 | Erkan Yilmaz 49 | Jonathan Sanchez 50 | Keith Cirkel 51 | Rick Waldron 52 | Herbert Vojčík 53 | Richard Gibson 54 | Alex J Burke 55 | Sergii Kliuchnyk 56 | Corey Frang 57 | John Reeves 58 | Antranig Basman 59 | Vivin Paliath 60 | Joshua Niehus 61 | Glen Huang 62 | Jonas Ulrich 63 | Jamie Hoover 64 | James M. Greene 65 | Rodney Rehm 66 | Peter Wagenet 67 | Clog 68 | Matthew Mirande 69 | Jared Wyles 70 | Dmitry Gusev 71 | Ian Wallis 72 | Dan Andreescu 73 | Matthew DuVall 74 | Dave K. Smith 75 | David Vollbracht 76 | -------------------------------------------------------------------------------- /vendor/DocumentUp/vendor/javascript/languages/django.js: -------------------------------------------------------------------------------- 1 | /* 2 | Language: Django 3 | Requires: xml.js 4 | */ 5 | 6 | hljs.LANGUAGES.django = function() { 7 | 8 | function allowsDjangoSyntax(mode, parent) { 9 | return ( 10 | parent == undefined || // defaultMode 11 | (!mode.className && parent.className == 'tag') || // tag_internal 12 | mode.className == 'value' // value 13 | ); 14 | } 15 | 16 | function copy(mode, parent) { 17 | var result = {}; 18 | for (var key in mode) { 19 | if (key != 'contains') { 20 | result[key] = mode[key]; 21 | }; 22 | var contains = []; 23 | for (var i = 0; mode.contains && i < mode.contains.length; i++) { 24 | contains.push(copy(mode.contains[i], mode)); 25 | } 26 | if (allowsDjangoSyntax(mode, parent)) { 27 | contains = DJANGO_CONTAINS.concat(contains); 28 | } 29 | if (contains.length) { 30 | result.contains = contains; 31 | } 32 | } 33 | return result; 34 | } 35 | 36 | var FILTER = { 37 | className: 'filter', 38 | begin: '\\|[A-Za-z]+\\:?', excludeEnd: true, 39 | keywords: {'truncatewords': 1, 'removetags': 1, 'linebreaksbr': 1, 'yesno': 1, 'get_digit': 1, 'timesince': 1, 'random': 1, 'striptags': 1, 'filesizeformat': 1, 'escape': 1, 'linebreaks': 1, 'length_is': 1, 'ljust': 1, 'rjust': 1, 'cut': 1, 'urlize': 1, 'fix_ampersands': 1, 'title': 1, 'floatformat': 1, 'capfirst': 1, 'pprint': 1, 'divisibleby': 1, 'add': 1, 'make_list': 1, 'unordered_list': 1, 'urlencode': 1, 'timeuntil': 1, 'urlizetrunc': 1, 'wordcount': 1, 'stringformat': 1, 'linenumbers': 1, 'slice': 1, 'date': 1, 'dictsort': 1, 'dictsortreversed': 1, 'default_if_none': 1, 'pluralize': 1, 'lower': 1, 'join': 1, 'center': 1, 'default': 1, 'truncatewords_html': 1, 'upper': 1, 'length': 1, 'phone2numeric': 1, 'wordwrap': 1, 'time': 1, 'addslashes': 1, 'slugify': 1, 'first': 1}, 40 | contains: [ 41 | {className: 'argument', begin: '"', end: '"'} 42 | ] 43 | }; 44 | 45 | var DJANGO_CONTAINS = [ 46 | { 47 | className: 'template_comment', 48 | begin: '{%\\s*comment\\s*%}', end: '{%\\s*endcomment\\s*%}' 49 | }, 50 | { 51 | className: 'template_comment', 52 | begin: '{#', end: '#}' 53 | }, 54 | { 55 | className: 'template_tag', 56 | begin: '{%', end: '%}', 57 | keywords: {'comment': 1, 'endcomment': 1, 'load': 1, 'templatetag': 1, 'ifchanged': 1, 'endifchanged': 1, 'if': 1, 'endif': 1, 'firstof': 1, 'for': 1, 'endfor': 1, 'in': 1, 'ifnotequal': 1, 'endifnotequal': 1, 'widthratio': 1, 'extends': 1, 'include': 1, 'spaceless': 1, 'endspaceless': 1, 'regroup': 1, 'by': 1, 'as': 1, 'ifequal': 1, 'endifequal': 1, 'ssi': 1, 'now': 1, 'with': 1, 'cycle': 1, 'url': 1, 'filter': 1, 'endfilter': 1, 'debug': 1, 'block': 1, 'endblock': 1, 'else': 1}, 58 | contains: [FILTER] 59 | }, 60 | { 61 | className: 'variable', 62 | begin: '{{', end: '}}', 63 | contains: [FILTER] 64 | } 65 | ]; 66 | 67 | return { 68 | case_insensitive: true, 69 | defaultMode: copy(hljs.LANGUAGES.xml.defaultMode) 70 | }; 71 | 72 | }(); 73 | -------------------------------------------------------------------------------- /vendor/DocumentUp/scripts/package: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env coffee 2 | 3 | File = require("fs") 4 | Uglify = require("uglify-js") 5 | Coffee = require("coffee-script") 6 | Ender = require("ender") 7 | Stylus = require("stylus") 8 | Nib = require("nib") 9 | Async = require("async") 10 | 11 | assert = require("assert") 12 | 13 | dependencies = ["domready", "bonzo", "qwery", "bean", "reqwest"] 14 | 15 | console.log "BUILDING ENDER PACKAGE" 16 | Ender.build dependencies, {output: "vendor/javascript/ender"}, -> 17 | 18 | to_build = [ 19 | "vendor/javascript/ender.js" 20 | "vendor/javascript/highlight.js" 21 | "vendor/javascript/languages/*" 22 | "vendor/javascript/marked.js" 23 | "src/browser/documentup.coffee" 24 | "src/stylesheets/screen.styl" 25 | ] 26 | 27 | Async.map to_build, (path, callback)-> 28 | if /\*$/.test(path) 29 | console.log "CONCATENATING ALL FILES UNDER: #{path}" 30 | new_path = path.replace "*", "" 31 | File.readdir "#{__dirname}/../#{new_path}", (err, files)-> 32 | return callback(err) if err 33 | contents = "" 34 | files.forEach (file, index, arr)-> 35 | return unless /(js|coffee)$/.test(file) 36 | File.readFile "#{__dirname}/../#{new_path}#{file}", "utf8", (err, content)-> 37 | if /xml/.test(file) 38 | contents = content + contents 39 | else 40 | contents += content 41 | callback(null, contents) if index == arr.length - 1 42 | else 43 | console.log "CONCATENATING #{path}" 44 | contents = File.readFile "#{__dirname}/../#{path}", "utf8", (err, contents)-> 45 | return callback(err) if err 46 | if /coffee$/.test(path) 47 | try 48 | contents = Coffee.compile(contents) 49 | catch e 50 | return callback(e) 51 | callback(null, contents) 52 | else if /styl$/.test(path) 53 | Stylus(contents).set('filename', path).set('compress', true).use(Nib()).render (err, css)-> 54 | return callback(err) if err 55 | contents = """ 56 | var style_tag = document.createElement("style"); 57 | style_tag.type = "text/css" 58 | style_tag.innerHTML = '#{css.replace(/\n/gm, "")}' 59 | document.getElementsByTagName('head')[0].appendChild(style_tag); 60 | """ 61 | callback(null, contents) 62 | else 63 | callback(err, contents) 64 | 65 | , (err, contents) -> 66 | return throw err if err 67 | contents = contents.join("") 68 | File.writeFile "#{__dirname}/../documentup.js", contents, (err)-> 69 | if err 70 | console.log "AN ERROR OCCURED WHEN ATTEMPTING TO SAVE UNCOMPRESSED FILE" 71 | console.log(err) 72 | console.log "UNCOMPRESSED FILE SAVED TO: #{__dirname}/../documentup.js" 73 | try 74 | ast = Uglify.parser.parse(contents) 75 | ast = Uglify.uglify.ast_mangle(ast) 76 | ast = Uglify.uglify.ast_squeeze(ast) 77 | final_code = Uglify.uglify.gen_code(ast) 78 | File.writeFile "#{__dirname}/../documentup.min.js", final_code, (err)-> 79 | throw err if err 80 | console.log "COMPRESSED FILE SAVED TO: #{__dirname}/../documentup.min.js" 81 | catch e 82 | console.log "AN ERROR OCCURED WHEN ATTEMPTING TO SAVE COMPRESSED FILE" 83 | console.log(e) 84 | -------------------------------------------------------------------------------- /vendor/DocumentUp/vendor/javascript/languages/css.js: -------------------------------------------------------------------------------- 1 | /* 2 | Language: CSS 3 | */ 4 | 5 | hljs.LANGUAGES.css = function() { 6 | var FUNCTION = { 7 | className: 'function', 8 | begin: hljs.IDENT_RE + '\\(', end: '\\)', 9 | contains: [{ 10 | endsWithParent: true, excludeEnd: true, 11 | contains: [hljs.NUMBER_MODE, hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE] 12 | }] 13 | }; 14 | return { 15 | case_insensitive: true, 16 | defaultMode: { 17 | illegal: '[=/|\']', 18 | contains: [ 19 | hljs.C_BLOCK_COMMENT_MODE, 20 | { 21 | className: 'id', begin: '\\#[A-Za-z0-9_-]+' 22 | }, 23 | { 24 | className: 'class', begin: '\\.[A-Za-z0-9_-]+', 25 | relevance: 0 26 | }, 27 | { 28 | className: 'attr_selector', 29 | begin: '\\[', end: '\\]', 30 | illegal: '$' 31 | }, 32 | { 33 | className: 'pseudo', 34 | begin: ':(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\\"\\\']+' 35 | }, 36 | { 37 | className: 'at_rule', 38 | begin: '@(font-face|page)', 39 | lexems: '[a-z-]+', 40 | keywords: {'font-face': 1, 'page': 1} 41 | }, 42 | { 43 | className: 'at_rule', 44 | begin: '@', end: '[{;]', // at_rule eating first "{" is a good thing 45 | // because it doesn't let it to be parsed as 46 | // a rule set but instead drops parser into 47 | // the defaultMode which is how it should be. 48 | excludeEnd: true, 49 | keywords: {'import': 1, 'page': 1, 'media': 1, 'charset': 1}, 50 | contains: [ 51 | FUNCTION, 52 | hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE, 53 | hljs.NUMBER_MODE 54 | ] 55 | }, 56 | { 57 | className: 'tag', begin: hljs.IDENT_RE, 58 | relevance: 0 59 | }, 60 | { 61 | className: 'rules', 62 | begin: '{', end: '}', 63 | illegal: '[^\\s]', 64 | relevance: 0, 65 | contains: [ 66 | hljs.C_BLOCK_COMMENT_MODE, 67 | { 68 | className: 'rule', 69 | begin: '[^\\s]', returnBegin: true, end: ';', endsWithParent: true, 70 | contains: [ 71 | { 72 | className: 'attribute', 73 | begin: '[A-Z\\_\\.\\-]+', end: ':', 74 | excludeEnd: true, 75 | illegal: '[^\\s]', 76 | starts: { 77 | className: 'value', 78 | endsWithParent: true, excludeEnd: true, 79 | contains: [ 80 | FUNCTION, 81 | hljs.NUMBER_MODE, 82 | hljs.QUOTE_STRING_MODE, 83 | hljs.APOS_STRING_MODE, 84 | hljs.C_BLOCK_COMMENT_MODE, 85 | { 86 | className: 'hexcolor', begin: '\\#[0-9A-F]+' 87 | }, 88 | { 89 | className: 'important', begin: '!important' 90 | } 91 | ] 92 | } 93 | } 94 | ] 95 | } 96 | ] 97 | } 98 | ] 99 | } 100 | }; 101 | }(); 102 | -------------------------------------------------------------------------------- /vendor/DocumentUp/vendor/javascript/languages/objectivec.js: -------------------------------------------------------------------------------- 1 | /* 2 | Language: Objective C 3 | Author: Valerii Hiora 4 | */ 5 | 6 | hljs.LANGUAGES.objectivec = function(){ 7 | var OBJC_KEYWORDS = { 8 | 'keyword': { 9 | 'false': 1, 'int': 1, 'float': 1, 'while': 1, 'private': 1, 'char': 1, 10 | 'catch': 1, 'export': 1, 'sizeof': 2, 'typedef': 2, 'const': 1, 11 | 'struct': 1, 'for': 1, 'union': 1, 'unsigned': 1, 'long': 1, 12 | 'volatile': 2, 'static': 1, 'protected': 1, 'bool': 1, 'mutable': 1, 13 | 'if': 1, 'public': 1, 'do': 1, 'return': 1, 'goto': 1, 'void': 2, 14 | 'enum': 1, 'else': 1, 'break': 1, 'extern': 1, 'true': 1, 'class': 1, 15 | 'asm': 1, 'case': 1, 'short': 1, 'default': 1, 'double': 1, 'throw': 1, 16 | 'register': 1, 'explicit': 1, 'signed': 1, 'typename': 1, 'try': 1, 17 | 'this': 1, 'switch': 1, 'continue': 1, 'wchar_t': 1, 'inline': 1, 18 | 'readonly': 1, 'assign': 1, 'property': 1, 'protocol': 10, 'self': 1, 19 | 'synchronized': 1, 'end': 1, 'synthesize': 50, 'id': 1, 'optional': 1, 20 | 'required': 1, 'implementation': 10, 'nonatomic': 1,'interface': 1, 21 | 'super': 1, 'unichar': 1, 'finally': 2, 'dynamic': 2, 'nil': 1 22 | }, 23 | 'built_in': { 24 | 'YES': 5, 'NO': 5, 'NULL': 1, 'IBOutlet': 50, 'IBAction': 50, 25 | 'NSString': 50, 'NSDictionary': 50, 'CGRect': 50, 'CGPoint': 50, 26 | 'NSRange': 50, 'release': 1, 'retain': 1, 'autorelease': 50, 27 | 'UIButton': 50, 'UILabel': 50, 'UITextView': 50, 'UIWebView': 50, 28 | 'MKMapView': 50, 'UISegmentedControl': 50, 'NSObject': 50, 29 | 'UITableViewDelegate': 50, 'UITableViewDataSource': 50, 'NSThread': 50, 30 | 'UIActivityIndicator': 50, 'UITabbar': 50, 'UIToolBar': 50, 31 | 'UIBarButtonItem': 50, 'UIImageView': 50, 'NSAutoreleasePool': 50, 32 | 'UITableView': 50, 'BOOL': 1, 'NSInteger': 20, 'CGFloat': 20, 33 | 'NSException': 50, 'NSLog': 50, 'NSMutableString': 50, 34 | 'NSMutableArray': 50, 'NSMutableDictionary': 50, 'NSURL': 50 35 | } 36 | }; 37 | return { 38 | defaultMode: { 39 | keywords: OBJC_KEYWORDS, 40 | illegal: '' 67 | } 68 | ] 69 | }, 70 | { 71 | className: 'preprocessor', 72 | begin: '#', 73 | end: '$' 74 | }, 75 | { 76 | className: 'class', 77 | begin: 'interface|class|protocol|implementation', 78 | end: '({|$)', 79 | keywords: { 80 | 'interface': 1, 81 | 'class': 1, 82 | 'protocol': 5, 83 | 'implementation': 5 84 | }, 85 | contains: [{ 86 | className: 'id', 87 | begin: hljs.UNDERSCORE_IDENT_RE 88 | } 89 | ] 90 | } 91 | ] 92 | } 93 | }; 94 | }(); 95 | -------------------------------------------------------------------------------- /vendor/backbone/docs/jsl.conf: -------------------------------------------------------------------------------- 1 | # JavaScriptLint configuration file for CoffeeScript. 2 | 3 | +no_return_value # function {0} does not always return a value 4 | +duplicate_formal # duplicate formal argument {0} 5 | -equal_as_assign # test for equality (==) mistyped as assignment (=)?{0} 6 | +var_hides_arg # variable {0} hides argument 7 | +redeclared_var # redeclaration of {0} {1} 8 | -anon_no_return_value # anonymous function does not always return a value 9 | +missing_semicolon # missing semicolon 10 | +meaningless_block # meaningless block; curly braces have no impact 11 | -comma_separated_stmts # multiple statements separated by commas (use semicolons?) 12 | +unreachable_code # unreachable code 13 | +missing_break # missing break statement 14 | +missing_break_for_last_case # missing break statement for last case in switch 15 | -comparison_type_conv # comparisons against null, 0, true, false, or an empty string allowing implicit type conversion (use === or !==) 16 | -inc_dec_within_stmt # increment (++) and decrement (--) operators used as part of greater statement 17 | -useless_void # use of the void type may be unnecessary (void is always undefined) 18 | +multiple_plus_minus # unknown order of operations for successive plus (e.g. x+++y) or minus (e.g. x---y) signs 19 | +use_of_label # use of label 20 | -block_without_braces # block statement without curly braces 21 | +leading_decimal_point # leading decimal point may indicate a number or an object member 22 | +trailing_decimal_point # trailing decimal point may indicate a number or an object member 23 | +octal_number # leading zeros make an octal number 24 | +nested_comment # nested comment 25 | +misplaced_regex # regular expressions should be preceded by a left parenthesis, assignment, colon, or comma 26 | +ambiguous_newline # unexpected end of line; it is ambiguous whether these lines are part of the same statement 27 | +empty_statement # empty statement or extra semicolon 28 | -missing_option_explicit # the "option explicit" control comment is missing 29 | +partial_option_explicit # the "option explicit" control comment, if used, must be in the first script tag 30 | +dup_option_explicit # duplicate "option explicit" control comment 31 | +useless_assign # useless assignment 32 | +ambiguous_nested_stmt # block statements containing block statements should use curly braces to resolve ambiguity 33 | +ambiguous_else_stmt # the else statement could be matched with one of multiple if statements (use curly braces to indicate intent) 34 | -missing_default_case # missing default case in switch statement 35 | +duplicate_case_in_switch # duplicate case in switch statements 36 | +default_not_at_end # the default case is not at the end of the switch statement 37 | +legacy_cc_not_understood # couldn't understand control comment using /*@keyword@*/ syntax 38 | +jsl_cc_not_understood # couldn't understand control comment using /*jsl:keyword*/ syntax 39 | +useless_comparison # useless comparison; comparing identical expressions 40 | +with_statement # with statement hides undeclared variables; use temporary variable instead 41 | +trailing_comma_in_array # extra comma is not recommended in array initializers 42 | +assign_to_function_call # assignment to a function call 43 | +parseint_missing_radix # parseInt missing radix parameter 44 | +lambda_assign_requires_semicolon 45 | -------------------------------------------------------------------------------- /vendor/backbone/test/vendor/runner.js: -------------------------------------------------------------------------------- 1 | /* 2 | * QtWebKit-powered headless test runner using PhantomJS 3 | * 4 | * PhantomJS binaries: http://phantomjs.org/download.html 5 | * Requires PhantomJS 1.6+ (1.7+ recommended) 6 | * 7 | * Run with: 8 | * phantomjs runner.js [url-of-your-qunit-testsuite] 9 | * 10 | * e.g. 11 | * phantomjs runner.js http://localhost/qunit/test/index.html 12 | */ 13 | 14 | /*jshint latedef:false */ 15 | /*global phantom:false, require:false, console:false, window:false, QUnit:false */ 16 | 17 | (function() { 18 | 'use strict'; 19 | 20 | var args = require('system').args; 21 | 22 | // arg[0]: scriptName, args[1...]: arguments 23 | if (args.length !== 2) { 24 | console.error('Usage:\n phantomjs runner.js [url-of-your-qunit-testsuite]'); 25 | phantom.exit(1); 26 | } 27 | 28 | var url = args[1], 29 | page = require('webpage').create(); 30 | 31 | // Route `console.log()` calls from within the Page context to the main Phantom context (i.e. current `this`) 32 | page.onConsoleMessage = function(msg) { 33 | console.log(msg); 34 | }; 35 | 36 | page.onInitialized = function() { 37 | page.evaluate(addLogging); 38 | }; 39 | 40 | page.onCallback = function(message) { 41 | var result, 42 | failed; 43 | 44 | if (message) { 45 | if (message.name === 'QUnit.done') { 46 | result = message.data; 47 | failed = !result || result.failed; 48 | 49 | phantom.exit(failed ? 1 : 0); 50 | } 51 | } 52 | }; 53 | 54 | page.open(url, function(status) { 55 | if (status !== 'success') { 56 | console.error('Unable to access network: ' + status); 57 | phantom.exit(1); 58 | } else { 59 | // Cannot do this verification with the 'DOMContentLoaded' handler because it 60 | // will be too late to attach it if a page does not have any script tags. 61 | var qunitMissing = page.evaluate(function() { return (typeof QUnit === 'undefined' || !QUnit); }); 62 | if (qunitMissing) { 63 | console.error('The `QUnit` object is not present on this page.'); 64 | phantom.exit(1); 65 | } 66 | 67 | // Do nothing... the callback mechanism will handle everything! 68 | } 69 | }); 70 | 71 | function addLogging() { 72 | window.document.addEventListener('DOMContentLoaded', function() { 73 | var current_test_assertions = []; 74 | 75 | QUnit.log(function(details) { 76 | var response; 77 | 78 | // Ignore passing assertions 79 | if (details.result) { 80 | return; 81 | } 82 | 83 | response = details.message || ''; 84 | 85 | if (typeof details.expected !== 'undefined') { 86 | if (response) { 87 | response += ', '; 88 | } 89 | 90 | response += 'expected: ' + details.expected + ', but was: ' + details.actual; 91 | if (details.source) { 92 | response += "\n" + details.source; 93 | } 94 | } 95 | 96 | current_test_assertions.push('Failed assertion: ' + response); 97 | }); 98 | 99 | QUnit.testDone(function(result) { 100 | var i, 101 | len, 102 | name = result.module + ': ' + result.name; 103 | 104 | if (result.failed) { 105 | console.log('Test failed: ' + name); 106 | 107 | for (i = 0, len = current_test_assertions.length; i < len; i++) { 108 | console.log(' ' + current_test_assertions[i]); 109 | } 110 | } 111 | 112 | current_test_assertions.length = 0; 113 | }); 114 | 115 | QUnit.done(function(result) { 116 | console.log('Took ' + result.runtime + 'ms to run ' + result.total + ' tests. ' + result.passed + ' passed, ' + result.failed + ' failed.'); 117 | 118 | if (typeof window.callPhantom === 'function') { 119 | window.callPhantom({ 120 | 'name': 'QUnit.done', 121 | 'data': result 122 | }); 123 | } 124 | }); 125 | }, false); 126 | } 127 | })(); 128 | -------------------------------------------------------------------------------- /vendor/qunit/.mailmap: -------------------------------------------------------------------------------- 1 | Jörn Zaefferer 2 | Jörn Zaefferer 3 | Ariel Flesler 4 | Scott González 5 | Richard Worth 6 | Philippe Rathé 7 | John Resig 8 | Will Moffat 9 | Jan Kassens 10 | Ziling Zhao 11 | Ryan Szulczewski 12 | Chris Lloyd 13 | Louis-Rémi Babé 14 | Louis-Rémi Babé 15 | Louis-Rémi Babé 16 | Jake Archibald 17 | Jake Archibald 18 | Frances Berriman 19 | Rune Halvorsen 20 | Rune Halvorsen 21 | Chris Thatcher 22 | Chris Thatcher 23 | Fábio Rehm 24 | Leon Sorokin 25 | Douglas Neiner 26 | Paul Elliott 27 | Nikita Vasilyev 28 | Benjamin Lee 29 | Paul Irish 30 | Oleg Slobodskoi 31 | Anton Matzneller 32 | Aurélien Bombo 33 | Mathias Bynens 34 | Erik Vold 35 | Wesley Walser 36 | Wesley Walser 37 | Rob Kinninmont 38 | Marc Portier 39 | Michael Righi 40 | Timo Tijhof 41 | Jan Alonzo 42 | Daniel Trebbien 43 | Bob Fanger 44 | Markus Messner-Chaney 45 | Trevor Parscal 46 | Ashar Voultoiz 47 | Jimmy Mabey 48 | Domenic Denicola 49 | Mike Sherov 50 | Seong-A Kong 51 | Graham Conzett 52 | Niall Smart 53 | Johan Sörlin 54 | Gijs Kruitbosch 55 | Erkan Yilmaz 56 | Jonathan Sanchez 57 | Keith Cirkel 58 | Rick Waldron 59 | Herbert Vojčík 60 | Richard Gibson 61 | Alex J Burke 62 | Sergii Kliuchnyk 63 | Sergii Kliuchnyk 64 | Corey Frang 65 | John Reeves 66 | John Reeves 67 | Vivin Paliath 68 | Joshua Niehus 69 | Glen Huang 70 | Glen Huang 71 | Jonas Ulrich 72 | Jamie Hoover 73 | Jamie Hoover 74 | James M. Greene 75 | Rodney Rehm 76 | Peter Wagenet 77 | Clog 78 | Clog 79 | Antranig Basman 80 | Antranig Basman 81 | Matthew Mirande 82 | Jared Wyles 83 | Dmitry Gusev 84 | Ian Wallis 85 | Ian Wallis 86 | Dan Andreescu 87 | Dan Andreescu 88 | Matthew DuVall 89 | Matthew DuVall 90 | Dave K. Smith 91 | David Vollbracht 92 | -------------------------------------------------------------------------------- /vendor/qunit/addons/phantomjs/runner.js: -------------------------------------------------------------------------------- 1 | /* 2 | * QtWebKit-powered headless test runner using PhantomJS 3 | * 4 | * PhantomJS binaries: http://phantomjs.org/download.html 5 | * Requires PhantomJS 1.6+ (1.7+ recommended) 6 | * 7 | * Run with: 8 | * phantomjs runner.js [url-of-your-qunit-testsuite] 9 | * 10 | * e.g. 11 | * phantomjs runner.js http://localhost/qunit/test/index.html 12 | */ 13 | 14 | /*global phantom:false, require:false, console:false, window:false, QUnit:false */ 15 | 16 | (function() { 17 | 'use strict'; 18 | 19 | var url, page, timeout, 20 | args = require('system').args; 21 | 22 | // arg[0]: scriptName, args[1...]: arguments 23 | if (args.length < 2 || args.length > 3) { 24 | console.error('Usage:\n phantomjs runner.js [url-of-your-qunit-testsuite] [timeout-in-seconds]'); 25 | phantom.exit(1); 26 | } 27 | 28 | url = args[1]; 29 | page = require('webpage').create(); 30 | if (args[2] !== undefined) { 31 | timeout = parseInt(args[2], 10); 32 | } 33 | 34 | // Route `console.log()` calls from within the Page context to the main Phantom context (i.e. current `this`) 35 | page.onConsoleMessage = function(msg) { 36 | console.log(msg); 37 | }; 38 | 39 | page.onInitialized = function() { 40 | page.evaluate(addLogging); 41 | }; 42 | 43 | page.onCallback = function(message) { 44 | var result, 45 | failed; 46 | 47 | if (message) { 48 | if (message.name === 'QUnit.done') { 49 | result = message.data; 50 | failed = !result || result.failed; 51 | 52 | phantom.exit(failed ? 1 : 0); 53 | } 54 | } 55 | }; 56 | 57 | page.open(url, function(status) { 58 | if (status !== 'success') { 59 | console.error('Unable to access network: ' + status); 60 | phantom.exit(1); 61 | } else { 62 | // Cannot do this verification with the 'DOMContentLoaded' handler because it 63 | // will be too late to attach it if a page does not have any script tags. 64 | var qunitMissing = page.evaluate(function() { return (typeof QUnit === 'undefined' || !QUnit); }); 65 | if (qunitMissing) { 66 | console.error('The `QUnit` object is not present on this page.'); 67 | phantom.exit(1); 68 | } 69 | 70 | // Set a timeout on the test running, otherwise tests with async problems will hang forever 71 | if (typeof timeout === 'number') { 72 | setTimeout(function() { 73 | console.error('The specified timeout of ' + timeout + ' seconds has expired. Aborting...'); 74 | phantom.exit(1); 75 | }, timeout * 1000); 76 | } 77 | 78 | // Do nothing... the callback mechanism will handle everything! 79 | } 80 | }); 81 | 82 | function addLogging() { 83 | window.document.addEventListener('DOMContentLoaded', function() { 84 | var currentTestAssertions = []; 85 | 86 | QUnit.log(function(details) { 87 | var response; 88 | 89 | // Ignore passing assertions 90 | if (details.result) { 91 | return; 92 | } 93 | 94 | response = details.message || ''; 95 | 96 | if (typeof details.expected !== 'undefined') { 97 | if (response) { 98 | response += ', '; 99 | } 100 | 101 | response += 'expected: ' + details.expected + ', but was: ' + details.actual; 102 | } 103 | 104 | if (details.source) { 105 | response += "\n" + details.source; 106 | } 107 | 108 | currentTestAssertions.push('Failed assertion: ' + response); 109 | }); 110 | 111 | QUnit.testDone(function(result) { 112 | var i, 113 | len, 114 | name = result.module + ': ' + result.name; 115 | 116 | if (result.failed) { 117 | console.log('Test failed: ' + name); 118 | 119 | for (i = 0, len = currentTestAssertions.length; i < len; i++) { 120 | console.log(' ' + currentTestAssertions[i]); 121 | } 122 | } 123 | 124 | currentTestAssertions.length = 0; 125 | }); 126 | 127 | QUnit.done(function(result) { 128 | console.log('Took ' + result.runtime + 'ms to run ' + result.total + ' tests. ' + result.passed + ' passed, ' + result.failed + ' failed.'); 129 | 130 | if (typeof window.callPhantom === 'function') { 131 | window.callPhantom({ 132 | 'name': 'QUnit.done', 133 | 'data': result 134 | }); 135 | } 136 | }); 137 | }, false); 138 | } 139 | })(); 140 | -------------------------------------------------------------------------------- /vendor/DocumentUp/vendor/javascript/languages/sql.js: -------------------------------------------------------------------------------- 1 | /* 2 | Language: SQL 3 | */ 4 | 5 | hljs.LANGUAGES.sql = { 6 | case_insensitive: true, 7 | defaultMode: { 8 | illegal: '[^\\s]', 9 | contains: [ 10 | { 11 | className: 'operator', 12 | begin: '(begin|start|commit|rollback|savepoint|lock|alter|create|drop|rename|call|delete|do|handler|insert|load|replace|select|truncate|update|set|show|pragma)\\b', end: ';|$', 13 | keywords: { 14 | 'keyword': { 15 | 'all': 1, 'partial': 1, 'global': 1, 'month': 1, 16 | 'current_timestamp': 1, 'using': 1, 'go': 1, 'revoke': 1, 17 | 'smallint': 1, 'indicator': 1, 'end-exec': 1, 'disconnect': 1, 18 | 'zone': 1, 'with': 1, 'character': 1, 'assertion': 1, 'to': 1, 19 | 'add': 1, 'current_user': 1, 'usage': 1, 'input': 1, 'local': 1, 20 | 'alter': 1, 'match': 1, 'collate': 1, 'real': 1, 'then': 1, 21 | 'rollback': 1, 'get': 1, 'read': 1, 'timestamp': 1, 22 | 'session_user': 1, 'not': 1, 'integer': 1, 'bit': 1, 'unique': 1, 23 | 'day': 1, 'minute': 1, 'desc': 1, 'insert': 1, 'execute': 1, 24 | 'like': 1, 'ilike': 2, 'level': 1, 'decimal': 1, 'drop': 1, 25 | 'continue': 1, 'isolation': 1, 'found': 1, 'where': 1, 26 | 'constraints': 1, 'domain': 1, 'right': 1, 'national': 1, 'some': 1, 27 | 'module': 1, 'transaction': 1, 'relative': 1, 'second': 1, 28 | 'connect': 1, 'escape': 1, 'close': 1, 'system_user': 1, 'for': 1, 29 | 'deferred': 1, 'section': 1, 'cast': 1, 'current': 1, 'sqlstate': 1, 30 | 'allocate': 1, 'intersect': 1, 'deallocate': 1, 'numeric': 1, 31 | 'public': 1, 'preserve': 1, 'full': 1, 'goto': 1, 'initially': 1, 32 | 'asc': 1, 'no': 1, 'key': 1, 'output': 1, 'collation': 1, 'group': 1, 33 | 'by': 1, 'union': 1, 'session': 1, 'both': 1, 'last': 1, 34 | 'language': 1, 'constraint': 1, 'column': 1, 'of': 1, 'space': 1, 35 | 'foreign': 1, 'deferrable': 1, 'prior': 1, 'connection': 1, 36 | 'unknown': 1, 'action': 1, 'commit': 1, 'view': 1, 'or': 1, 37 | 'first': 1, 'into': 1, 'float': 1, 'year': 1, 'primary': 1, 38 | 'cascaded': 1, 'except': 1, 'restrict': 1, 'set': 1, 'references': 1, 39 | 'names': 1, 'table': 1, 'outer': 1, 'open': 1, 'select': 1, 40 | 'size': 1, 'are': 1, 'rows': 1, 'from': 1, 'prepare': 1, 41 | 'distinct': 1, 'leading': 1, 'create': 1, 'only': 1, 'next': 1, 42 | 'inner': 1, 'authorization': 1, 'schema': 1, 'corresponding': 1, 43 | 'option': 1, 'declare': 1, 'precision': 1, 'immediate': 1, 'else': 1, 44 | 'timezone_minute': 1, 'external': 1, 'varying': 1, 'translation': 1, 45 | 'true': 1, 'case': 1, 'exception': 1, 'join': 1, 'hour': 1, 46 | 'default': 1, 'double': 1, 'scroll': 1, 'value': 1, 'cursor': 1, 47 | 'descriptor': 1, 'values': 1, 'dec': 1, 'fetch': 1, 'procedure': 1, 48 | 'delete': 1, 'and': 1, 'false': 1, 'int': 1, 'is': 1, 'describe': 1, 49 | 'char': 1, 'as': 1, 'at': 1, 'in': 1, 'varchar': 1, 'null': 1, 50 | 'trailing': 1, 'any': 1, 'absolute': 1, 'current_time': 1, 'end': 1, 51 | 'grant': 1, 'privileges': 1, 'when': 1, 'cross': 1, 'check': 1, 52 | 'write': 1, 'current_date': 1, 'pad': 1, 'begin': 1, 'temporary': 1, 53 | 'exec': 1, 'time': 1, 'update': 1, 'catalog': 1, 'user': 1, 'sql': 1, 54 | 'date': 1, 'on': 1, 'identity': 1, 'timezone_hour': 1, 'natural': 1, 55 | 'whenever': 1, 'interval': 1, 'work': 1, 'order': 1, 'cascade': 1, 56 | 'diagnostics': 1, 'nchar': 1, 'having': 1, 'left': 1, 'call': 1, 57 | 'do': 1, 'handler': 1, 'load': 1, 'replace': 1, 'truncate': 1, 58 | 'start': 1, 'lock': 1, 'show': 1, 'pragma': 1}, 59 | 'aggregate': {'count': 1, 'sum': 1, 'min': 1, 'max': 1, 'avg': 1} 60 | }, 61 | contains: [ 62 | { 63 | className: 'string', 64 | begin: '\'', end: '\'', 65 | contains: [hljs.BACKSLASH_ESCAPE, {begin: '\'\''}], 66 | relevance: 0 67 | }, 68 | { 69 | className: 'string', 70 | begin: '"', end: '"', 71 | contains: [hljs.BACKSLASH_ESCAPE, {begin: '""'}], 72 | relevance: 0 73 | }, 74 | { 75 | className: 'string', 76 | begin: '`', end: '`', 77 | contains: [hljs.BACKSLASH_ESCAPE] 78 | }, 79 | hljs.C_NUMBER_MODE, 80 | {begin: '\\n'} 81 | ] 82 | }, 83 | hljs.C_BLOCK_COMMENT_MODE, 84 | { 85 | className: 'comment', 86 | begin: '--', end: '$' 87 | } 88 | ] 89 | } 90 | }; 91 | -------------------------------------------------------------------------------- /vendor/backbone/examples/todos/todos.css: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | margin: 0; 4 | padding: 0; 5 | } 6 | 7 | body { 8 | font: 14px "Helvetica Neue", Helvetica, Arial, sans-serif; 9 | line-height: 1.4em; 10 | background: #eeeeee; 11 | color: #333333; 12 | width: 520px; 13 | margin: 0 auto; 14 | -webkit-font-smoothing: antialiased; 15 | } 16 | 17 | #todoapp { 18 | background: #fff; 19 | padding: 20px; 20 | margin-bottom: 40px; 21 | -webkit-box-shadow: rgba(0, 0, 0, 0.2) 0 2px 6px 0; 22 | -moz-box-shadow: rgba(0, 0, 0, 0.2) 0 2px 6px 0; 23 | -ms-box-shadow: rgba(0, 0, 0, 0.2) 0 2px 6px 0; 24 | -o-box-shadow: rgba(0, 0, 0, 0.2) 0 2px 6px 0; 25 | box-shadow: rgba(0, 0, 0, 0.2) 0 2px 6px 0; 26 | -webkit-border-radius: 0 0 5px 5px; 27 | -moz-border-radius: 0 0 5px 5px; 28 | -ms-border-radius: 0 0 5px 5px; 29 | -o-border-radius: 0 0 5px 5px; 30 | border-radius: 0 0 5px 5px; 31 | } 32 | 33 | #todoapp h1 { 34 | font-size: 36px; 35 | font-weight: bold; 36 | text-align: center; 37 | padding: 0 0 10px 0; 38 | } 39 | 40 | #todoapp input[type="text"] { 41 | width: 466px; 42 | font-size: 24px; 43 | font-family: inherit; 44 | line-height: 1.4em; 45 | border: 0; 46 | outline: none; 47 | padding: 6px; 48 | border: 1px solid #999999; 49 | -webkit-box-shadow: rgba(0, 0, 0, 0.2) 0 1px 2px 0 inset; 50 | -moz-box-shadow: rgba(0, 0, 0, 0.2) 0 1px 2px 0 inset; 51 | -ms-box-shadow: rgba(0, 0, 0, 0.2) 0 1px 2px 0 inset; 52 | -o-box-shadow: rgba(0, 0, 0, 0.2) 0 1px 2px 0 inset; 53 | box-shadow: rgba(0, 0, 0, 0.2) 0 1px 2px 0 inset; 54 | } 55 | 56 | #todoapp input::-webkit-input-placeholder { 57 | font-style: italic; 58 | } 59 | 60 | #main { 61 | display: none; 62 | } 63 | 64 | #todo-list { 65 | margin: 10px 0; 66 | padding: 0; 67 | list-style: none; 68 | } 69 | 70 | #todo-list li { 71 | padding: 18px 20px 18px 0; 72 | position: relative; 73 | font-size: 24px; 74 | border-bottom: 1px solid #cccccc; 75 | } 76 | 77 | #todo-list li:last-child { 78 | border-bottom: none; 79 | } 80 | 81 | #todo-list li.done label { 82 | color: #777777; 83 | text-decoration: line-through; 84 | } 85 | 86 | #todo-list .destroy { 87 | position: absolute; 88 | right: 5px; 89 | top: 20px; 90 | display: none; 91 | cursor: pointer; 92 | width: 20px; 93 | height: 20px; 94 | background: url(destroy.png) no-repeat; 95 | } 96 | 97 | #todo-list li:hover .destroy { 98 | display: block; 99 | } 100 | 101 | #todo-list .destroy:hover { 102 | background-position: 0 -20px; 103 | } 104 | 105 | #todo-list li.editing { 106 | border-bottom: none; 107 | margin-top: -1px; 108 | padding: 0; 109 | } 110 | 111 | #todo-list li.editing:last-child { 112 | margin-bottom: -1px; 113 | } 114 | 115 | #todo-list li.editing .edit { 116 | display: block; 117 | width: 444px; 118 | padding: 13px 15px 14px 20px; 119 | margin: 0; 120 | } 121 | 122 | #todo-list li.editing .view { 123 | display: none; 124 | } 125 | 126 | #todo-list li .view label { 127 | word-break: break-word; 128 | } 129 | 130 | #todo-list li .edit { 131 | display: none; 132 | } 133 | 134 | #todoapp footer { 135 | display: none; 136 | margin: 0 -20px -20px -20px; 137 | overflow: hidden; 138 | color: #555555; 139 | background: #f4fce8; 140 | border-top: 1px solid #ededed; 141 | padding: 0 20px; 142 | line-height: 37px; 143 | -webkit-border-radius: 0 0 5px 5px; 144 | -moz-border-radius: 0 0 5px 5px; 145 | -ms-border-radius: 0 0 5px 5px; 146 | -o-border-radius: 0 0 5px 5px; 147 | border-radius: 0 0 5px 5px; 148 | } 149 | 150 | #clear-completed { 151 | float: right; 152 | line-height: 20px; 153 | text-decoration: none; 154 | background: rgba(0, 0, 0, 0.1); 155 | color: #555555; 156 | font-size: 11px; 157 | margin-top: 8px; 158 | margin-bottom: 8px; 159 | padding: 0 10px 1px; 160 | cursor: pointer; 161 | -webkit-border-radius: 12px; 162 | -moz-border-radius: 12px; 163 | -ms-border-radius: 12px; 164 | -o-border-radius: 12px; 165 | border-radius: 12px; 166 | -webkit-box-shadow: rgba(0, 0, 0, 0.2) 0 -1px 0 0; 167 | -moz-box-shadow: rgba(0, 0, 0, 0.2) 0 -1px 0 0; 168 | -ms-box-shadow: rgba(0, 0, 0, 0.2) 0 -1px 0 0; 169 | -o-box-shadow: rgba(0, 0, 0, 0.2) 0 -1px 0 0; 170 | box-shadow: rgba(0, 0, 0, 0.2) 0 -1px 0 0; 171 | } 172 | 173 | #clear-completed:hover { 174 | background: rgba(0, 0, 0, 0.15); 175 | -webkit-box-shadow: rgba(0, 0, 0, 0.3) 0 -1px 0 0; 176 | -moz-box-shadow: rgba(0, 0, 0, 0.3) 0 -1px 0 0; 177 | -ms-box-shadow: rgba(0, 0, 0, 0.3) 0 -1px 0 0; 178 | -o-box-shadow: rgba(0, 0, 0, 0.3) 0 -1px 0 0; 179 | box-shadow: rgba(0, 0, 0, 0.3) 0 -1px 0 0; 180 | } 181 | 182 | #clear-completed:active { 183 | position: relative; 184 | top: 1px; 185 | } 186 | 187 | #todo-count span { 188 | font-weight: bold; 189 | } 190 | 191 | #instructions { 192 | margin: 10px auto; 193 | color: #777777; 194 | text-shadow: rgba(255, 255, 255, 0.8) 0 1px 0; 195 | text-align: center; 196 | } 197 | 198 | #instructions a { 199 | color: #336699; 200 | } 201 | 202 | #credits { 203 | margin: 30px auto; 204 | color: #999; 205 | text-shadow: rgba(255, 255, 255, 0.8) 0 1px 0; 206 | text-align: center; 207 | } 208 | 209 | #credits a { 210 | color: #888; 211 | } 212 | -------------------------------------------------------------------------------- /vendor/qunit/test/logs.js: -------------------------------------------------------------------------------- 1 | // TODO disable reordering for this suite! 2 | 3 | var begin = 0, 4 | moduleStart = 0, 5 | moduleDone = 0, 6 | testStart = 0, 7 | testDone = 0, 8 | log = 0, 9 | moduleContext, 10 | moduleDoneContext, 11 | testContext, 12 | testDoneContext, 13 | logContext; 14 | 15 | QUnit.begin(function() { 16 | begin++; 17 | }); 18 | QUnit.done(function() { 19 | }); 20 | QUnit.moduleStart(function(context) { 21 | moduleStart++; 22 | moduleContext = context; 23 | }); 24 | QUnit.moduleDone(function(context) { 25 | moduleDone++; 26 | moduleDoneContext = context; 27 | }); 28 | QUnit.testStart(function(context) { 29 | testStart++; 30 | testContext = context; 31 | }); 32 | QUnit.testDone(function(context) { 33 | testDone++; 34 | testDoneContext = context; 35 | }); 36 | QUnit.log(function(context) { 37 | log++; 38 | logContext = context; 39 | }); 40 | 41 | module("logs1"); 42 | 43 | test("test1", 15, function( assert ) { 44 | assert.equal( begin, 1, "QUnit.begin calls" ); 45 | assert.equal( moduleStart, 1, "QUnit.moduleStart calls" ); 46 | assert.equal( testStart, 1, "QUnit.testStart calls" ); 47 | assert.equal( testDone, 0, "QUnit.testDone calls" ); 48 | assert.equal( moduleDone, 0, "QUnit.moduleDone calls" ); 49 | assert.deepEqual( logContext, { 50 | name: "test1", 51 | module: "logs1", 52 | result: true, 53 | message: "QUnit.moduleDone calls", 54 | actual: 0, 55 | expected: 0 56 | }, "log context after equal(actual, expected, message)" ); 57 | 58 | assert.equal( "foo", "foo" ); 59 | assert.deepEqual(logContext, { 60 | name: "test1", 61 | module: "logs1", 62 | result: true, 63 | message: undefined, 64 | actual: "foo", 65 | expected: "foo" 66 | }, "log context after equal(actual, expected)" ); 67 | 68 | assert.ok( true, "ok(true, message)" ); 69 | assert.deepEqual( logContext, { 70 | module: "logs1", 71 | name: "test1", 72 | result: true, 73 | message: "ok(true, message)" 74 | }, "log context after ok(true, message)" ); 75 | 76 | assert.strictEqual( testDoneContext, undefined, "testDone context" ); 77 | assert.deepEqual( testContext, { 78 | module: "logs1", 79 | name: "test1" 80 | }, "test context" ); 81 | assert.strictEqual( moduleDoneContext, undefined, "moduleDone context" ); 82 | assert.deepEqual( moduleContext, { 83 | name: "logs1" 84 | }, "module context" ); 85 | 86 | assert.equal( log, 14, "QUnit.log calls" ); 87 | }); 88 | test("test2", 11, function( assert ) { 89 | assert.equal( begin, 1, "QUnit.begin calls" ); 90 | assert.equal( moduleStart, 1, "QUnit.moduleStart calls" ); 91 | assert.equal( testStart, 2, "QUnit.testStart calls" ); 92 | assert.equal( testDone, 1, "QUnit.testDone calls" ); 93 | assert.equal( moduleDone, 0, "QUnit.moduleDone calls" ); 94 | 95 | assert.ok( typeof testDoneContext.duration === "number" , "testDone context: duration" ); 96 | delete testDoneContext.duration; 97 | assert.deepEqual( testDoneContext, { 98 | module: "logs1", 99 | name: "test1", 100 | failed: 0, 101 | passed: 15, 102 | total: 15 103 | }, "testDone context" ); 104 | assert.deepEqual( testContext, { 105 | module: "logs1", 106 | name: "test2" 107 | }, "test context" ); 108 | assert.strictEqual( moduleDoneContext, undefined, "moduleDone context" ); 109 | assert.deepEqual( moduleContext, { 110 | name: "logs1" 111 | }, "module context" ); 112 | 113 | assert.equal( log, 25, "QUnit.log calls" ); 114 | }); 115 | 116 | module("logs2"); 117 | 118 | test( "test1", 9, function( assert ) { 119 | assert.equal( begin, 1, "QUnit.begin calls" ); 120 | assert.equal( moduleStart, 2, "QUnit.moduleStart calls" ); 121 | assert.equal( testStart, 3, "QUnit.testStart calls" ); 122 | assert.equal( testDone, 2, "QUnit.testDone calls" ); 123 | assert.equal( moduleDone, 1, "QUnit.moduleDone calls" ); 124 | 125 | assert.deepEqual( testContext, { 126 | module: "logs2", 127 | name: "test1" 128 | }, "test context" ); 129 | assert.deepEqual( moduleDoneContext, { 130 | name: "logs1", 131 | failed: 0, 132 | passed: 26, 133 | total: 26 134 | }, "moduleDone context" ); 135 | assert.deepEqual( moduleContext, { 136 | name: "logs2" 137 | }, "module context" ); 138 | 139 | assert.equal( log, 34, "QUnit.log calls" ); 140 | }); 141 | test( "test2", 8, function( assert ) { 142 | assert.equal( begin, 1, "QUnit.begin calls" ); 143 | assert.equal( moduleStart, 2, "QUnit.moduleStart calls" ); 144 | assert.equal( testStart, 4, "QUnit.testStart calls" ); 145 | assert.equal( testDone, 3, "QUnit.testDone calls" ); 146 | assert.equal( moduleDone, 1, "QUnit.moduleDone calls" ); 147 | 148 | assert.deepEqual( testContext, { 149 | module: "logs2", 150 | name: "test2" 151 | }, "test context" ); 152 | assert.deepEqual( moduleContext, { 153 | name: "logs2" 154 | }, "module context" ); 155 | 156 | assert.equal( log, 42, "QUnit.log calls" ); 157 | }); 158 | 159 | var testAutorun = true; 160 | 161 | QUnit.done(function() { 162 | 163 | if (!testAutorun) { 164 | return; 165 | } 166 | 167 | testAutorun = false; 168 | 169 | moduleStart = moduleDone = 0; 170 | 171 | // Since these tests run *after* done, and as such 172 | // QUnit is not able to know whether more tests are coming 173 | // the module starts/ends after each test. 174 | module("autorun"); 175 | 176 | test("first", function( assert ) { 177 | assert.equal(moduleStart, 1, "test started"); 178 | assert.equal(moduleDone, 0, "test in progress"); 179 | }); 180 | 181 | test("second", function( assert ) { 182 | assert.equal(moduleStart, 2, "test started"); 183 | assert.equal(moduleDone, 1, "test in progress"); 184 | }); 185 | }); 186 | -------------------------------------------------------------------------------- /vendor/DocumentUp/vendor/javascript/languages/erlang.js: -------------------------------------------------------------------------------- 1 | /* 2 | Language: Erlang 3 | Description: Erlang is a general-purpose functional language, with strict evaluation, single assignment, and dynamic typing. 4 | Author: Nikolay Zakharov , Dmitry Kovega 5 | */ 6 | 7 | hljs.LANGUAGES.erlang = function(){ 8 | var BASIC_ATOM_RE = '[a-z\'][a-zA-Z0-9_\']*'; 9 | var FUNCTION_NAME_RE = '(' + BASIC_ATOM_RE + ':' + BASIC_ATOM_RE + '|' + BASIC_ATOM_RE + ')'; 10 | var ERLANG_RESERVED = { 11 | 'keyword': { 12 | 'after': 1, 13 | 'and': 1, 14 | 'andalso': 10, 15 | 'band': 1, 16 | 'begin': 1, 17 | 'bnot': 1, 18 | 'bor': 1, 19 | 'bsl': 1, 20 | 'bzr': 1, 21 | 'bxor': 1, 22 | 'case': 1, 23 | 'catch': 1, 24 | 'cond': 1, 25 | 'div': 1, 26 | 'end': 1, 27 | 'fun': 1, 28 | 'let': 1, 29 | 'not': 1, 30 | 'of': 1, 31 | 'orelse': 10, 32 | 'query': 1, 33 | 'receive': 1, 34 | 'rem': 1, 35 | 'try': 1, 36 | 'when': 1, 37 | 'xor': 1 38 | }, 39 | 'literal': {'false': 1, 'true': 1} 40 | }; 41 | 42 | var COMMENT = { 43 | className: 'comment', 44 | begin: '%', end: '$', 45 | relevance: 0 46 | }; 47 | var NAMED_FUN = { 48 | begin: 'fun\\s+' + BASIC_ATOM_RE + '/\\d+' 49 | }; 50 | var FUNCTION_CALL = { 51 | begin: FUNCTION_NAME_RE + '\\(', end: '\\)', 52 | returnBegin: true, 53 | relevance: 0, 54 | contains: [ 55 | { 56 | className: 'function_name', begin: FUNCTION_NAME_RE, 57 | relevance: 0 58 | }, 59 | { 60 | begin: '\\(', end: '\\)', endsWithParent: true, 61 | returnEnd: true, 62 | relevance: 0 63 | // "contains" defined later 64 | } 65 | ] 66 | }; 67 | var TUPLE = { 68 | className: 'tuple', 69 | begin: '{', end: '}', 70 | relevance: 0 71 | // "contains" defined later 72 | }; 73 | var VAR1 = { 74 | className: 'variable', 75 | begin: '\\b_([A-Z][A-Za-z0-9_]*)?', 76 | relevance: 0 77 | }; 78 | var VAR2 = { 79 | className: 'variable', 80 | begin: '[A-Z][a-zA-Z0-9_]*', 81 | relevance: 0 82 | }; 83 | var RECORD_ACCESS = { 84 | begin: '#', end: '}', 85 | illegal: '.', 86 | relevance: 0, 87 | returnBegin: true, 88 | contains: [ 89 | { 90 | className: 'record_name', 91 | begin: '#' + hljs.UNDERSCORE_IDENT_RE, 92 | relevance: 0 93 | }, 94 | { 95 | begin: '{', endsWithParent: true, 96 | relevance: 0 97 | // "contains" defined later 98 | } 99 | ] 100 | }; 101 | 102 | var BLOCK_STATEMENTS = { 103 | keywords: ERLANG_RESERVED, 104 | begin: '(fun|receive|if|try|case)', end: 'end' 105 | }; 106 | BLOCK_STATEMENTS.contains = [ 107 | COMMENT, 108 | NAMED_FUN, 109 | hljs.inherit(hljs.APOS_STRING_MODE, {className: ''}), 110 | BLOCK_STATEMENTS, 111 | FUNCTION_CALL, 112 | hljs.QUOTE_STRING_MODE, 113 | hljs.C_NUMBER_MODE, 114 | TUPLE, 115 | VAR1, VAR2, 116 | RECORD_ACCESS 117 | ]; 118 | 119 | var BASIC_MODES = [ 120 | COMMENT, 121 | NAMED_FUN, 122 | BLOCK_STATEMENTS, 123 | FUNCTION_CALL, 124 | hljs.QUOTE_STRING_MODE, 125 | hljs.C_NUMBER_MODE, 126 | TUPLE, 127 | VAR1, VAR2, 128 | RECORD_ACCESS 129 | ]; 130 | FUNCTION_CALL.contains[1].contains = BASIC_MODES; 131 | TUPLE.contains = BASIC_MODES; 132 | RECORD_ACCESS.contains[1].contains = BASIC_MODES; 133 | 134 | var PARAMS = { 135 | className: 'params', 136 | begin: '\\(', end: '\\)', 137 | endsWithParent: true, 138 | contains: BASIC_MODES 139 | }; 140 | return { 141 | defaultMode: { 142 | keywords: ERLANG_RESERVED, 143 | illegal: '(', endsWithParent: true, 157 | contains: BASIC_MODES 158 | } 159 | ] 160 | }, 161 | COMMENT, 162 | { 163 | className: 'pp', 164 | begin: '^-', end: '\\.', 165 | relevance: 0, 166 | excludeEnd: true, 167 | returnBegin: true, 168 | lexems: '-' + hljs.IDENT_RE, 169 | keywords: { 170 | '-module':1, 171 | '-record':1, 172 | '-undef':1, 173 | '-export':1, 174 | '-ifdef':1, 175 | '-ifndef':1, 176 | '-author':1, 177 | '-copyright':1, 178 | '-doc':1, 179 | '-vsn':1, 180 | '-import': 1, 181 | '-include': 1, 182 | '-include_lib': 1, 183 | '-compile': 1, 184 | '-define': 1, 185 | '-else': 1, 186 | '-endif': 1, 187 | '-file': 1, 188 | '-behaviour': 1, 189 | '-behavior': 1 190 | }, 191 | contains: [PARAMS] 192 | }, 193 | hljs.C_NUMBER_MODE, 194 | hljs.QUOTE_STRING_MODE, 195 | RECORD_ACCESS, 196 | VAR1, VAR2, 197 | TUPLE 198 | ] 199 | } 200 | }; 201 | }(); 202 | -------------------------------------------------------------------------------- /test/vendor/qunit.css: -------------------------------------------------------------------------------- 1 | /** 2 | * QUnit v1.10.0 - A JavaScript Unit Testing Framework 3 | * 4 | * http://qunitjs.com 5 | * 6 | * Copyright 2012 jQuery Foundation and other contributors 7 | * Released under the MIT license. 8 | * http://jquery.org/license 9 | */ 10 | 11 | /** Font Family and Sizes */ 12 | 13 | #qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult { 14 | font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif; 15 | } 16 | 17 | #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; } 18 | #qunit-tests { font-size: smaller; } 19 | 20 | 21 | /** Resets */ 22 | 23 | #qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter { 24 | margin: 0; 25 | padding: 0; 26 | } 27 | 28 | 29 | /** Header */ 30 | 31 | #qunit-header { 32 | padding: 0.5em 0 0.5em 1em; 33 | 34 | color: #8699a4; 35 | background-color: #0d3349; 36 | 37 | font-size: 1.5em; 38 | line-height: 1em; 39 | font-weight: normal; 40 | 41 | border-radius: 5px 5px 0 0; 42 | -moz-border-radius: 5px 5px 0 0; 43 | -webkit-border-top-right-radius: 5px; 44 | -webkit-border-top-left-radius: 5px; 45 | } 46 | 47 | #qunit-header a { 48 | text-decoration: none; 49 | color: #c2ccd1; 50 | } 51 | 52 | #qunit-header a:hover, 53 | #qunit-header a:focus { 54 | color: #fff; 55 | } 56 | 57 | #qunit-testrunner-toolbar label { 58 | display: inline-block; 59 | padding: 0 .5em 0 .1em; 60 | } 61 | 62 | #qunit-banner { 63 | height: 5px; 64 | } 65 | 66 | #qunit-testrunner-toolbar { 67 | padding: 0.5em 0 0.5em 2em; 68 | color: #5E740B; 69 | background-color: #eee; 70 | overflow: hidden; 71 | } 72 | 73 | #qunit-userAgent { 74 | padding: 0.5em 0 0.5em 2.5em; 75 | background-color: #2b81af; 76 | color: #fff; 77 | text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px; 78 | } 79 | 80 | #qunit-modulefilter-container { 81 | float: right; 82 | } 83 | 84 | /** Tests: Pass/Fail */ 85 | 86 | #qunit-tests { 87 | list-style-position: inside; 88 | } 89 | 90 | #qunit-tests li { 91 | padding: 0.4em 0.5em 0.4em 2.5em; 92 | border-bottom: 1px solid #fff; 93 | list-style-position: inside; 94 | } 95 | 96 | #qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running { 97 | display: none; 98 | } 99 | 100 | #qunit-tests li strong { 101 | cursor: pointer; 102 | } 103 | 104 | #qunit-tests li a { 105 | padding: 0.5em; 106 | color: #c2ccd1; 107 | text-decoration: none; 108 | } 109 | #qunit-tests li a:hover, 110 | #qunit-tests li a:focus { 111 | color: #000; 112 | } 113 | 114 | #qunit-tests ol { 115 | margin-top: 0.5em; 116 | padding: 0.5em; 117 | 118 | background-color: #fff; 119 | 120 | border-radius: 5px; 121 | -moz-border-radius: 5px; 122 | -webkit-border-radius: 5px; 123 | } 124 | 125 | #qunit-tests table { 126 | border-collapse: collapse; 127 | margin-top: .2em; 128 | } 129 | 130 | #qunit-tests th { 131 | text-align: right; 132 | vertical-align: top; 133 | padding: 0 .5em 0 0; 134 | } 135 | 136 | #qunit-tests td { 137 | vertical-align: top; 138 | } 139 | 140 | #qunit-tests pre { 141 | margin: 0; 142 | white-space: pre-wrap; 143 | word-wrap: break-word; 144 | } 145 | 146 | #qunit-tests del { 147 | background-color: #e0f2be; 148 | color: #374e0c; 149 | text-decoration: none; 150 | } 151 | 152 | #qunit-tests ins { 153 | background-color: #ffcaca; 154 | color: #500; 155 | text-decoration: none; 156 | } 157 | 158 | /*** Test Counts */ 159 | 160 | #qunit-tests b.counts { color: black; } 161 | #qunit-tests b.passed { color: #5E740B; } 162 | #qunit-tests b.failed { color: #710909; } 163 | 164 | #qunit-tests li li { 165 | padding: 5px; 166 | background-color: #fff; 167 | border-bottom: none; 168 | list-style-position: inside; 169 | } 170 | 171 | /*** Passing Styles */ 172 | 173 | #qunit-tests li li.pass { 174 | color: #3c510c; 175 | background-color: #fff; 176 | border-left: 10px solid #C6E746; 177 | } 178 | 179 | #qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; } 180 | #qunit-tests .pass .test-name { color: #366097; } 181 | 182 | #qunit-tests .pass .test-actual, 183 | #qunit-tests .pass .test-expected { color: #999999; } 184 | 185 | #qunit-banner.qunit-pass { background-color: #C6E746; } 186 | 187 | /*** Failing Styles */ 188 | 189 | #qunit-tests li li.fail { 190 | color: #710909; 191 | background-color: #fff; 192 | border-left: 10px solid #EE5757; 193 | white-space: pre; 194 | } 195 | 196 | #qunit-tests > li:last-child { 197 | border-radius: 0 0 5px 5px; 198 | -moz-border-radius: 0 0 5px 5px; 199 | -webkit-border-bottom-right-radius: 5px; 200 | -webkit-border-bottom-left-radius: 5px; 201 | } 202 | 203 | #qunit-tests .fail { color: #000000; background-color: #EE5757; } 204 | #qunit-tests .fail .test-name, 205 | #qunit-tests .fail .module-name { color: #000000; } 206 | 207 | #qunit-tests .fail .test-actual { color: #EE5757; } 208 | #qunit-tests .fail .test-expected { color: green; } 209 | 210 | #qunit-banner.qunit-fail { background-color: #EE5757; } 211 | 212 | 213 | /** Result */ 214 | 215 | #qunit-testresult { 216 | padding: 0.5em 0.5em 0.5em 2.5em; 217 | 218 | color: #2b81af; 219 | background-color: #D2E0E6; 220 | 221 | border-bottom: 1px solid white; 222 | } 223 | #qunit-testresult .module-name { 224 | font-weight: bold; 225 | } 226 | 227 | /** Fixture */ 228 | 229 | #qunit-fixture { 230 | position: absolute; 231 | top: -10000px; 232 | left: -10000px; 233 | width: 1000px; 234 | height: 1000px; 235 | } 236 | -------------------------------------------------------------------------------- /vendor/qunit/qunit/qunit.css: -------------------------------------------------------------------------------- 1 | /** 2 | * QUnit v1.12.0 - A JavaScript Unit Testing Framework 3 | * 4 | * http://qunitjs.com 5 | * 6 | * Copyright 2012 jQuery Foundation and other contributors 7 | * Released under the MIT license. 8 | * http://jquery.org/license 9 | */ 10 | 11 | /** Font Family and Sizes */ 12 | 13 | #qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult { 14 | font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif; 15 | } 16 | 17 | #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; } 18 | #qunit-tests { font-size: smaller; } 19 | 20 | 21 | /** Resets */ 22 | 23 | #qunit-tests, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter { 24 | margin: 0; 25 | padding: 0; 26 | } 27 | 28 | 29 | /** Header */ 30 | 31 | #qunit-header { 32 | padding: 0.5em 0 0.5em 1em; 33 | 34 | color: #8699a4; 35 | background-color: #0d3349; 36 | 37 | font-size: 1.5em; 38 | line-height: 1em; 39 | font-weight: normal; 40 | 41 | border-radius: 5px 5px 0 0; 42 | -moz-border-radius: 5px 5px 0 0; 43 | -webkit-border-top-right-radius: 5px; 44 | -webkit-border-top-left-radius: 5px; 45 | } 46 | 47 | #qunit-header a { 48 | text-decoration: none; 49 | color: #c2ccd1; 50 | } 51 | 52 | #qunit-header a:hover, 53 | #qunit-header a:focus { 54 | color: #fff; 55 | } 56 | 57 | #qunit-testrunner-toolbar label { 58 | display: inline-block; 59 | padding: 0 .5em 0 .1em; 60 | } 61 | 62 | #qunit-banner { 63 | height: 5px; 64 | } 65 | 66 | #qunit-testrunner-toolbar { 67 | padding: 0.5em 0 0.5em 2em; 68 | color: #5E740B; 69 | background-color: #eee; 70 | overflow: hidden; 71 | } 72 | 73 | #qunit-userAgent { 74 | padding: 0.5em 0 0.5em 2.5em; 75 | background-color: #2b81af; 76 | color: #fff; 77 | text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px; 78 | } 79 | 80 | #qunit-modulefilter-container { 81 | float: right; 82 | } 83 | 84 | /** Tests: Pass/Fail */ 85 | 86 | #qunit-tests { 87 | list-style-position: inside; 88 | } 89 | 90 | #qunit-tests li { 91 | padding: 0.4em 0.5em 0.4em 2.5em; 92 | border-bottom: 1px solid #fff; 93 | list-style-position: inside; 94 | } 95 | 96 | #qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running { 97 | display: none; 98 | } 99 | 100 | #qunit-tests li strong { 101 | cursor: pointer; 102 | } 103 | 104 | #qunit-tests li a { 105 | padding: 0.5em; 106 | color: #c2ccd1; 107 | text-decoration: none; 108 | } 109 | #qunit-tests li a:hover, 110 | #qunit-tests li a:focus { 111 | color: #000; 112 | } 113 | 114 | #qunit-tests li .runtime { 115 | float: right; 116 | font-size: smaller; 117 | } 118 | 119 | .qunit-assert-list { 120 | margin-top: 0.5em; 121 | padding: 0.5em; 122 | 123 | background-color: #fff; 124 | 125 | border-radius: 5px; 126 | -moz-border-radius: 5px; 127 | -webkit-border-radius: 5px; 128 | } 129 | 130 | .qunit-collapsed { 131 | display: none; 132 | } 133 | 134 | #qunit-tests table { 135 | border-collapse: collapse; 136 | margin-top: .2em; 137 | } 138 | 139 | #qunit-tests th { 140 | text-align: right; 141 | vertical-align: top; 142 | padding: 0 .5em 0 0; 143 | } 144 | 145 | #qunit-tests td { 146 | vertical-align: top; 147 | } 148 | 149 | #qunit-tests pre { 150 | margin: 0; 151 | white-space: pre-wrap; 152 | word-wrap: break-word; 153 | } 154 | 155 | #qunit-tests del { 156 | background-color: #e0f2be; 157 | color: #374e0c; 158 | text-decoration: none; 159 | } 160 | 161 | #qunit-tests ins { 162 | background-color: #ffcaca; 163 | color: #500; 164 | text-decoration: none; 165 | } 166 | 167 | /*** Test Counts */ 168 | 169 | #qunit-tests b.counts { color: black; } 170 | #qunit-tests b.passed { color: #5E740B; } 171 | #qunit-tests b.failed { color: #710909; } 172 | 173 | #qunit-tests li li { 174 | padding: 5px; 175 | background-color: #fff; 176 | border-bottom: none; 177 | list-style-position: inside; 178 | } 179 | 180 | /*** Passing Styles */ 181 | 182 | #qunit-tests li li.pass { 183 | color: #3c510c; 184 | background-color: #fff; 185 | border-left: 10px solid #C6E746; 186 | } 187 | 188 | #qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; } 189 | #qunit-tests .pass .test-name { color: #366097; } 190 | 191 | #qunit-tests .pass .test-actual, 192 | #qunit-tests .pass .test-expected { color: #999999; } 193 | 194 | #qunit-banner.qunit-pass { background-color: #C6E746; } 195 | 196 | /*** Failing Styles */ 197 | 198 | #qunit-tests li li.fail { 199 | color: #710909; 200 | background-color: #fff; 201 | border-left: 10px solid #EE5757; 202 | white-space: pre; 203 | } 204 | 205 | #qunit-tests > li:last-child { 206 | border-radius: 0 0 5px 5px; 207 | -moz-border-radius: 0 0 5px 5px; 208 | -webkit-border-bottom-right-radius: 5px; 209 | -webkit-border-bottom-left-radius: 5px; 210 | } 211 | 212 | #qunit-tests .fail { color: #000000; background-color: #EE5757; } 213 | #qunit-tests .fail .test-name, 214 | #qunit-tests .fail .module-name { color: #000000; } 215 | 216 | #qunit-tests .fail .test-actual { color: #EE5757; } 217 | #qunit-tests .fail .test-expected { color: green; } 218 | 219 | #qunit-banner.qunit-fail { background-color: #EE5757; } 220 | 221 | 222 | /** Result */ 223 | 224 | #qunit-testresult { 225 | padding: 0.5em 0.5em 0.5em 2.5em; 226 | 227 | color: #2b81af; 228 | background-color: #D2E0E6; 229 | 230 | border-bottom: 1px solid white; 231 | } 232 | #qunit-testresult .module-name { 233 | font-weight: bold; 234 | } 235 | 236 | /** Fixture */ 237 | 238 | #qunit-fixture { 239 | position: absolute; 240 | top: -10000px; 241 | left: -10000px; 242 | width: 1000px; 243 | height: 1000px; 244 | } 245 | -------------------------------------------------------------------------------- /vendor/backbone/test/vendor/qunit.css: -------------------------------------------------------------------------------- 1 | /** 2 | * QUnit v1.12.0 - A JavaScript Unit Testing Framework 3 | * 4 | * http://qunitjs.com 5 | * 6 | * Copyright 2012 jQuery Foundation and other contributors 7 | * Released under the MIT license. 8 | * http://jquery.org/license 9 | */ 10 | 11 | /** Font Family and Sizes */ 12 | 13 | #qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult { 14 | font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif; 15 | } 16 | 17 | #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; } 18 | #qunit-tests { font-size: smaller; } 19 | 20 | 21 | /** Resets */ 22 | 23 | #qunit-tests, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter { 24 | margin: 0; 25 | padding: 0; 26 | } 27 | 28 | 29 | /** Header */ 30 | 31 | #qunit-header { 32 | padding: 0.5em 0 0.5em 1em; 33 | 34 | color: #8699a4; 35 | background-color: #0d3349; 36 | 37 | font-size: 1.5em; 38 | line-height: 1em; 39 | font-weight: normal; 40 | 41 | border-radius: 5px 5px 0 0; 42 | -moz-border-radius: 5px 5px 0 0; 43 | -webkit-border-top-right-radius: 5px; 44 | -webkit-border-top-left-radius: 5px; 45 | } 46 | 47 | #qunit-header a { 48 | text-decoration: none; 49 | color: #c2ccd1; 50 | } 51 | 52 | #qunit-header a:hover, 53 | #qunit-header a:focus { 54 | color: #fff; 55 | } 56 | 57 | #qunit-testrunner-toolbar label { 58 | display: inline-block; 59 | padding: 0 .5em 0 .1em; 60 | } 61 | 62 | #qunit-banner { 63 | height: 5px; 64 | } 65 | 66 | #qunit-testrunner-toolbar { 67 | padding: 0.5em 0 0.5em 2em; 68 | color: #5E740B; 69 | background-color: #eee; 70 | overflow: hidden; 71 | } 72 | 73 | #qunit-userAgent { 74 | padding: 0.5em 0 0.5em 2.5em; 75 | background-color: #2b81af; 76 | color: #fff; 77 | text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px; 78 | } 79 | 80 | #qunit-modulefilter-container { 81 | float: right; 82 | } 83 | 84 | /** Tests: Pass/Fail */ 85 | 86 | #qunit-tests { 87 | list-style-position: inside; 88 | } 89 | 90 | #qunit-tests li { 91 | padding: 0.4em 0.5em 0.4em 2.5em; 92 | border-bottom: 1px solid #fff; 93 | list-style-position: inside; 94 | } 95 | 96 | #qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running { 97 | display: none; 98 | } 99 | 100 | #qunit-tests li strong { 101 | cursor: pointer; 102 | } 103 | 104 | #qunit-tests li a { 105 | padding: 0.5em; 106 | color: #c2ccd1; 107 | text-decoration: none; 108 | } 109 | #qunit-tests li a:hover, 110 | #qunit-tests li a:focus { 111 | color: #000; 112 | } 113 | 114 | #qunit-tests li .runtime { 115 | float: right; 116 | font-size: smaller; 117 | } 118 | 119 | .qunit-assert-list { 120 | margin-top: 0.5em; 121 | padding: 0.5em; 122 | 123 | background-color: #fff; 124 | 125 | border-radius: 5px; 126 | -moz-border-radius: 5px; 127 | -webkit-border-radius: 5px; 128 | } 129 | 130 | .qunit-collapsed { 131 | display: none; 132 | } 133 | 134 | #qunit-tests table { 135 | border-collapse: collapse; 136 | margin-top: .2em; 137 | } 138 | 139 | #qunit-tests th { 140 | text-align: right; 141 | vertical-align: top; 142 | padding: 0 .5em 0 0; 143 | } 144 | 145 | #qunit-tests td { 146 | vertical-align: top; 147 | } 148 | 149 | #qunit-tests pre { 150 | margin: 0; 151 | white-space: pre-wrap; 152 | word-wrap: break-word; 153 | } 154 | 155 | #qunit-tests del { 156 | background-color: #e0f2be; 157 | color: #374e0c; 158 | text-decoration: none; 159 | } 160 | 161 | #qunit-tests ins { 162 | background-color: #ffcaca; 163 | color: #500; 164 | text-decoration: none; 165 | } 166 | 167 | /*** Test Counts */ 168 | 169 | #qunit-tests b.counts { color: black; } 170 | #qunit-tests b.passed { color: #5E740B; } 171 | #qunit-tests b.failed { color: #710909; } 172 | 173 | #qunit-tests li li { 174 | padding: 5px; 175 | background-color: #fff; 176 | border-bottom: none; 177 | list-style-position: inside; 178 | } 179 | 180 | /*** Passing Styles */ 181 | 182 | #qunit-tests li li.pass { 183 | color: #3c510c; 184 | background-color: #fff; 185 | border-left: 10px solid #C6E746; 186 | } 187 | 188 | #qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; } 189 | #qunit-tests .pass .test-name { color: #366097; } 190 | 191 | #qunit-tests .pass .test-actual, 192 | #qunit-tests .pass .test-expected { color: #999999; } 193 | 194 | #qunit-banner.qunit-pass { background-color: #C6E746; } 195 | 196 | /*** Failing Styles */ 197 | 198 | #qunit-tests li li.fail { 199 | color: #710909; 200 | background-color: #fff; 201 | border-left: 10px solid #EE5757; 202 | white-space: pre; 203 | } 204 | 205 | #qunit-tests > li:last-child { 206 | border-radius: 0 0 5px 5px; 207 | -moz-border-radius: 0 0 5px 5px; 208 | -webkit-border-bottom-right-radius: 5px; 209 | -webkit-border-bottom-left-radius: 5px; 210 | } 211 | 212 | #qunit-tests .fail { color: #000000; background-color: #EE5757; } 213 | #qunit-tests .fail .test-name, 214 | #qunit-tests .fail .module-name { color: #000000; } 215 | 216 | #qunit-tests .fail .test-actual { color: #EE5757; } 217 | #qunit-tests .fail .test-expected { color: green; } 218 | 219 | #qunit-banner.qunit-fail { background-color: #EE5757; } 220 | 221 | 222 | /** Result */ 223 | 224 | #qunit-testresult { 225 | padding: 0.5em 0.5em 0.5em 2.5em; 226 | 227 | color: #2b81af; 228 | background-color: #D2E0E6; 229 | 230 | border-bottom: 1px solid white; 231 | } 232 | #qunit-testresult .module-name { 233 | font-weight: bold; 234 | } 235 | 236 | /** Fixture */ 237 | 238 | #qunit-fixture { 239 | position: absolute; 240 | top: -10000px; 241 | left: -10000px; 242 | width: 1000px; 243 | height: 1000px; 244 | } 245 | -------------------------------------------------------------------------------- /vendor/DocumentUp/README.md: -------------------------------------------------------------------------------- 1 | # Document Up your Readmes! 2 | 3 | Instantly beautify your Github repositories' `README.md` with DocumentUp. This site has been generated with it. 4 | 5 | Essentially, it parses your readme's markdown into a clean and simple documentation website. Made especially for your `gh-pages` branch, all you need is a single `index.html` file that includes the DocumentUp script.* 6 | 7 | \* Some configuration required 8 | 9 | ## Quick dress up 10 | 11 | Simple as pie. Put that in your repository's gh-pages' branch's `index.html`: 12 | 13 | ```html 14 | 15 | 16 | 17 | 18 | 19 | 20 | 23 | 24 | 25 | 26 | ``` 27 | 28 | Make sure to change the `"username/repository"` to the repository's name and user's username. 29 | 30 | ## Usage 31 | 32 | ### Getting the script 33 | 34 | **Recommended** 35 | Use [CDNJS](http://cdnjs.com) with this script `src`: `http://cdnjs.cloudflare.com/ajax/libs/documentup/latest.min.js` 36 | 37 | **Also good** 38 | Download it from this repository There's a minified version of it named `documentup.min.js` 39 | 40 | ### Instantiation 41 | 42 | DocumentUp, in its simplest form, accepts a single argument. A string representing a public repository's "route": 43 | 44 | ```javascript 45 | DocumentUp.document("username/repository"); 46 | ``` 47 | 48 | It can be enhanced with an option object like so: 49 | 50 | ```javascript 51 | DocumentUp.document({ 52 | repo: "username/repository", 53 | color: "green" 54 | }); 55 | ``` 56 | 57 | ### Options 58 | 59 | **repo** (String) *required* 60 | Github repository in the form of `username/repository` 61 | 62 | **name** (String) *default: repository name* 63 | Name of your project. It'll appear in the header of the sidebar. Defaults to the `repository` substring of the `repo` option. 64 | 65 | **color** (String) *default: "#336699"* 66 | CSS-like color representing the color for the links both in the sidebar and the content. 67 | 68 | **issues** (Boolean or String) *default: true* 69 | Adds a link to the sidebar for the issues tab of the repository if `true`. Also accepts a string if your issues are managed elsewhere. 70 | 71 | **travis** (Boolean) *default: false* 72 | Indicate if the project is being tested by [Travis-CI](http://travis-ci.org/). If `true`, it'll add the small travis badge in the sidebar. 73 | 74 | **twitter** (String *or* Array of strings) *default: null* 75 | Add follow buttons for one or more Twitter accounts to your sidebar. Useful to gather followers. 76 | 77 | ## Formatting guide 78 | 79 | Just like you normally would. DocumentUp also supports "Github Flavored Markdown" and we recommend you use it for syntax highlighting. 80 | 81 | h1's (# in markdown) will appear as first level navigation in the sidebar while h2's (##) will appear under them as sub-navigation. 82 | 83 | Example: 84 | 85 | ```plain 86 | # Project name / Title (won't appear in the sidebar) 87 | 88 | Some intro text if you want. 89 | 90 | ## Top level-navigation 91 | 92 | ### Sub-navigation 93 | 94 | #### This wouldn't show up in the sidebar 95 | ``` 96 | 97 | ## Contributions are welcome 98 | 99 | If you're a designer or coder and would like to contribute new styles, new features or bug fixes, please don't keep them to yourself, fork the project and send in a pull request! 100 | 101 | ## Local development 102 | 103 | ### Requirements 104 | 105 | * Node.js (preferrably > 0.6) 106 | * npm 107 | 108 | ### Project structure 109 | 110 | `src/browser/documentup.coffee`: DocumentUp Class definition 111 | `src/stylesheets/screen.styl`: Styles for the documentation 112 | 113 | ### Setup your environment 114 | 115 | Simply `npm install` 116 | 117 | ### Build cool shit 118 | 119 | When you're done, `./scripts/package` to package everything into a single file. 120 | 121 | ## TODO 122 | 123 | Feel free to take up any of these if you're bored: 124 | 125 | * Google crawlability 126 | * Deep linkability 127 | * Better cross-browser support 128 | 129 | ## Thank you 130 | 131 | * Thanks for the few well documented project sites out there for the inspiration. 132 | * Thanks to [CDNJS](http://cdnjs.com) for being so helpful and hosting this project. 133 | 134 | ## Changelog 135 | 136 | **0.1.0 (Jan 25, 2012)** 137 | 138 | * `http://cdnjs.cloudflare.com/ajax/libs/documentup/0.1.0/documentup.min.js` 139 | * Initial release 140 | 141 | **0.1.1 (Jan 26, 2012)** 142 | 143 | * Files now parsed in UTF-8 144 | * Namespaced localStorage (thanks to [tbranyen](https://github.com/tbranyen)) 145 | * A few README fixes 146 | 147 | ## License 148 | 149 | Copyright (c) 2012 Jerome Gravel-Niquet 150 | 151 | Permission is hereby granted, free of charge, to any person obtaining 152 | a copy of this software and associated documentation files (the 153 | "Software"), to deal in the Software without restriction, including 154 | without limitation the rights to use, copy, modify, merge, publish, 155 | distribute, sublicense, and/or sell copies of the Software, and to 156 | permit persons to whom the Software is furnished to do so, subject to 157 | the following conditions: 158 | 159 | The above copyright notice and this permission notice shall be 160 | included in all copies or substantial portions of the Software. 161 | 162 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 163 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 164 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 165 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 166 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 167 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 168 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 169 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Backbone-Nested [![Build Status](https://secure.travis-ci.org/afeld/backbone-nested.png?branch=master)](http://travis-ci.org/afeld/backbone-nested) 2 | 3 | A plugin to make [Backbone.js](http://documentcloud.github.com/backbone) keep track of nested attributes. Download the latest version and see the changelog/history/release notes on the [Releases](https://github.com/afeld/backbone-nested/releases) page. **Supports Backbone 0.9.x and 1.x.** 4 | 5 | ## The Need 6 | 7 | Suppose you have a Backbone Model with nested attributes, perhaps to remain consistent with your document-oriented database. Updating the nested attribute won't cause the model's `"change"` event to fire, which is confusing. 8 | 9 | ```javascript 10 | var user = new Backbone.Model({ 11 | name: { 12 | first: 'Aidan', 13 | last: 'Feldman' 14 | } 15 | }); 16 | 17 | user.bind('change', function(){ 18 | // this is never reached! 19 | }); 20 | 21 | user.get('name').first = 'Bob'; 22 | user.save(); 23 | ``` 24 | 25 | Wouldn't it be awesome if you could do this? 26 | 27 | ```javascript 28 | user.bind('change:name.first', function(){ ... }); 29 | ``` 30 | 31 | ## Installation 32 | 33 | ### [Bower](http://bower.io/) 34 | 35 | Recommended. 36 | 37 | 1. Install the latest version: 38 | 39 | ```bash 40 | bower install backbone backbone-nested-model jquery underscore --save 41 | ``` 42 | 43 | 2. Add `backbone-nested.js` to your HTML ``: 44 | 45 | ```html 46 | 47 | 48 | 49 | 50 | 51 | ``` 52 | 53 | ### Manual 54 | 55 | Download the latest [release](https://github.com/afeld/backbone-nested/releases) and the dependencies listed above, then include with script tags in your HTML. 56 | 57 | ## Usage 58 | 59 | 1. Change your models to extend from `Backbone.NestedModel`, e.g. 60 | 61 | ```javascript 62 | var Person = Backbone.Model.extend({ ... }); 63 | 64 | // becomes 65 | 66 | var Person = Backbone.NestedModel.extend({ ... }); 67 | ``` 68 | 69 | 2. Change your getters and setters to not access nested attributes directly, e.g. 70 | 71 | ```javascript 72 | user.get('name').first = 'Bob'; 73 | 74 | // becomes 75 | 76 | user.set({'name.first': 'Bob'}); 77 | ``` 78 | 79 | Best of all, `Backbone.NestedModel` is designed to be a [backwards-compatible](http://afeld.github.com/backbone-nested/test/), drop-in replacement of `Backbone.Model`, so the switch can be made painlessly. 80 | 81 | ## Nested Attributes 82 | 83 | `get()` and `set()` will work as before, but nested attributes should be accessed using the Backbone-Nested string syntax: 84 | 85 | ### 1-1 86 | 87 | ```javascript 88 | // dot syntax 89 | user.set({ 90 | 'name.first': 'Bob', 91 | 'name.middle.initial': 'H' 92 | }); 93 | user.get('name.first') // returns 'Bob' 94 | user.get('name.middle.initial') // returns 'H' 95 | 96 | // object syntax 97 | user.set({ 98 | 'name': { 99 | first: 'Barack', 100 | last: 'Obama' 101 | } 102 | }); 103 | ``` 104 | 105 | ### 1-N 106 | 107 | ```javascript 108 | // object syntax 109 | user.set({ 110 | 'addresses': [ 111 | {city: 'Brooklyn', state: 'NY'}, 112 | {city: 'Oak Park', state: 'IL'} 113 | ] 114 | }); 115 | user.get('addresses[0].state') // returns 'NY' 116 | 117 | // square bracket syntax 118 | user.set({ 119 | 'addresses[1].state': 'MI' 120 | }); 121 | ``` 122 | 123 | ## Events 124 | 125 | ### "change" 126 | 127 | `"change"` events can be bound to nested attributes in the same way, and changing nested attributes will fire up the chain: 128 | 129 | ```javascript 130 | // all of these will fire when 'name.middle.initial' is set or changed 131 | user.bind('change', function(model, newVal){ ... }); 132 | user.bind('change:name', function(model, newName){ ... }); 133 | user.bind('change:name.middle', function(model, newMiddleName){ ... }); 134 | user.bind('change:name.middle.initial', function(model, newInitial){ ... }); 135 | 136 | // all of these will fire when the first address is added or changed 137 | user.bind('change', function(model, newVal){ ... }); 138 | user.bind('change:addresses', function(model, addrs){ ... }); 139 | user.bind('change:addresses[0]', function(model, newAddr){ ... }); 140 | user.bind('change:addresses[0].city', function(model, newCity){ ... }); 141 | ``` 142 | 143 | ### "add" and "remove" 144 | 145 | Additionally, nested arrays fire `"add"` and `"remove"` events: 146 | 147 | ```javascript 148 | user.bind('add:addresses', function(model, newAddr){ ... }); 149 | user.bind('remove:addresses', function(model, oldAddr){ ... }); 150 | ``` 151 | 152 | ## Special Methods 153 | 154 | ### add() 155 | 156 | Acts like `set()`, but appends the item to the nested array. For example: 157 | 158 | ```javascript 159 | user.get('addresses').length; //=> 2 160 | user.add('addresses', { 161 | city: 'Seattle', 162 | state: 'WA' 163 | }); 164 | user.get('addresses').length; //=> 3 165 | ``` 166 | 167 | ### remove() 168 | 169 | Acts like `unset()`, but if the unset item is an element in a nested array, the array will be compacted. For example: 170 | 171 | ```javascript 172 | user.get('addresses').length; //=> 2 173 | user.remove('addresses[0]'); 174 | user.get('addresses').length; //=> 1 175 | ``` 176 | 177 | ## See also 178 | 179 | Note, this plugin does *not* handle non-embedded relations (a.k.a. relations), which keeps it relatively simple. If you support for more complex relationships between models, see [the Backbone plugin wiki page](https://github.com/jashkenas/backbone/wiki/Extensions,-Plugins,-Resources#relations). There is also an open discussion about [merging this project with backbone-deep-model](https://github.com/powmedia/backbone-deep-model/issues/14). 180 | 181 | ## Contributing 182 | 183 | Pull requests are more than welcome - please add tests, which can be run by opening test/index.html. They can also be run from the command-line (requires [PhantomJS](http://phantomjs.org/)): 184 | 185 | $ npm install 186 | $ grunt 187 | 188 | See also: [live tests](http://afeld.github.com/backbone-nested/test/) for latest release. 189 | -------------------------------------------------------------------------------- /vendor/backbone/examples/backbone.localStorage.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Backbone localStorage Adapter 3 | * Version 1.1.0 4 | * 5 | * https://github.com/jeromegn/Backbone.localStorage 6 | */ 7 | (function (root, factory) { 8 | if (typeof define === "function" && define.amd) { 9 | // AMD. Register as an anonymous module. 10 | define(["underscore","backbone"], function(_, Backbone) { 11 | // Use global variables if the locals are undefined. 12 | return factory(_ || root._, Backbone || root.Backbone); 13 | }); 14 | } else { 15 | // RequireJS isn't being used. Assume underscore and backbone are loaded in