├── README.md ├── app ├── .gitignore ├── Jakefile ├── Makefile ├── README.md ├── audio │ ├── achievement.mp3 │ ├── achievement.ogg │ ├── achievement.wav │ ├── click.mp3 │ ├── click.ogg │ ├── click.wav │ ├── coin-1.mp3 │ ├── coin-1.ogg │ ├── coin-1.wav │ ├── coin-2.mp3 │ ├── coin-2.ogg │ ├── coin-2.wav │ ├── coin-3.mp3 │ ├── coin-3.ogg │ ├── coin-3.wav │ ├── defeat.mp3 │ ├── defeat.ogg │ ├── defeat.wav │ ├── end.mp3 │ ├── end.ogg │ ├── end.wav │ ├── flawless-victory.mp3 │ ├── flawless-victory.ogg │ ├── flawless-victory.wav │ ├── guess-2.mp3 │ ├── guess-2.ogg │ ├── guess-2.wav │ ├── guess.mp3 │ ├── guess.ogg │ ├── guess.wav │ ├── miss-2.mp3 │ ├── miss-2.ogg │ ├── miss-2.wav │ ├── miss.mp3 │ ├── miss.ogg │ ├── miss.wav │ ├── power-commit.mp3 │ ├── power-commit.ogg │ ├── power-commit.wav │ ├── power-half.mp3 │ ├── power-half.ogg │ ├── power-half.wav │ ├── power-repo.mp3 │ ├── power-repo.ogg │ ├── power-repo.wav │ ├── power-time.mp3 │ ├── power-time.ogg │ ├── power-time.wav │ ├── timer-beep-2.mp3 │ ├── timer-beep-2.ogg │ ├── timer-beep-2.wav │ ├── timer-beep.mp3 │ ├── timer-beep.ogg │ ├── timer-beep.wav │ ├── timer-tick.mp3 │ ├── timer-tick.ogg │ ├── timer-tick.wav │ ├── victory.mp3 │ ├── victory.ogg │ └── victory.wav ├── component.json ├── img │ ├── favicon.png │ └── type.png ├── index.html ├── lib │ ├── audio │ │ ├── audio.css │ │ ├── audio.js │ │ └── component.json │ ├── boot │ │ ├── boot.css │ │ ├── component.json │ │ ├── game.js │ │ ├── index.js │ │ └── router.js │ ├── commit-display │ │ ├── commit-display.css │ │ ├── commit-display.js │ │ ├── component.json │ │ └── template.html │ ├── finish-screen │ │ ├── component.json │ │ ├── finish-screen.css │ │ ├── finish-screen.js │ │ ├── header-template.html │ │ └── template.html │ ├── hearts │ │ ├── component.json │ │ ├── hearts.css │ │ ├── hearts.js │ │ └── template.html │ ├── level-hub │ │ ├── component.json │ │ ├── level-hub.css │ │ ├── level-hub.js │ │ ├── level-template.html │ │ └── template.html │ ├── level-stats │ │ ├── component.json │ │ ├── level-stats.css │ │ ├── level-stats.js │ │ └── template.html │ ├── models │ │ ├── campaign.js │ │ ├── commit.js │ │ ├── component.json │ │ ├── level.js │ │ ├── models.js │ │ ├── plugins.js │ │ ├── power.js │ │ ├── repo.js │ │ ├── round.js │ │ ├── shuffle.js │ │ ├── user-level-progress.js │ │ └── user.js │ ├── power-list │ │ ├── component.json │ │ ├── power-list.css │ │ ├── power-list.js │ │ └── template.html │ ├── repo-list │ │ ├── component.json │ │ ├── repo-list.css │ │ ├── repo-list.js │ │ └── template.html │ ├── score-card │ │ ├── component.json │ │ ├── score-card.css │ │ ├── score-card.js │ │ └── template.html │ ├── share-buttons │ │ ├── component.json │ │ ├── share-buttons.css │ │ └── share-buttons.js │ ├── timer │ │ ├── component.json │ │ ├── template.html │ │ ├── timer.css │ │ └── timer.js │ ├── track │ │ ├── component.json │ │ └── track.js │ └── tutorial │ │ ├── component.json │ │ ├── tutorial.css │ │ └── tutorial.js └── package.json ├── backend ├── .gitignore ├── app.wsgi ├── config.py ├── crawl.py ├── equalize.py ├── github.py ├── grade.py ├── model.py ├── schema.sql └── server.py ├── mocks ├── game-screen-1.png ├── game-screen-1.xcf ├── game-screen-2.png ├── game-screen-3.png ├── hub-with-powers.png ├── hub.png ├── intro.gif └── progress-bar-mock.png ├── screenshot.png └── todo-priorities /README.md: -------------------------------------------------------------------------------- 1 | ## GuessHub 2 | ##### GGO13 Entry by @max99x & @amasad with design help from [Haya Odeh](http://www.behance.net/hayaodeh) 3 | 4 | Given a patch (change) taken from a GitHub commit, guess which repository 5 | it comes from. 6 | 7 |  8 | 9 | ### Open Source Projects Used 10 | 11 | #### Backend 12 | * [Flask](http://flask.pocoo.org/) 13 | * [MariaDB](https://mariadb.org/) 14 | 15 | #### JavaScript 16 | * [jQuery](http://jquery.com/) 17 | * [Jake](https://github.com/mde/jake) 18 | * [d3](http://d3js.org/) 19 | * [twitter/hogan.js](http://twitter.github.io/hogan.js/) 20 | * [component](http://component.io/) 21 | * [component/model](http://component.io/component/model) 22 | * [segmentio/model-defaults](http://component.io/segmentio/model-defaults) 23 | * [component/humanize-number](http://component.io/component/humanize-number) 24 | * [component/overlay](http://component.io/component/overlay) 25 | * [component/tip](http://component.io/component/tip) 26 | * [ianstormtaylor/animate](http://github.com/ianstormtaylor/animate) 27 | * [howler.js](http://goldfirestudios.com/blog/104/howler.js-Modern-Web-Audio-Javascript-Library) 28 | * [Prism](http://prismjs.com/) 29 | 30 | #### CSS 31 | * [enricomarino/css-reset](https://github.com/enricomarino/css-reset) 32 | * [animate.css](https://github.com/ianstormtaylor/animate) 33 | 34 | #### Fonts 35 | * [Ubuntu Fonts](http://font.ubuntu.com/) 36 | * [Font-Awesome](https://github.com/FortAwesome/Font-Awesome) 37 | 38 | ### License 39 | 40 | GuessHub is licensed under [the MIT license](http://opensource.org/licenses/MIT). 41 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | components 3 | node_modules 4 | lib/*/*template.js 5 | .DS_STORE 6 | dist 7 | -------------------------------------------------------------------------------- /app/Jakefile: -------------------------------------------------------------------------------- 1 | task('Install components'); 2 | task('install', { async: true }, function () { 3 | jake.exec('component install', { printStdout: true }, function () { 4 | console.log('install success!'); 5 | complete(); 6 | }); 7 | }); 8 | 9 | var templatesGlobStr = 'lib/*/*.html'; 10 | 11 | task('Convert templates'); 12 | task('convert', { async: true }, function () { 13 | var glob = require('glob'); 14 | var cmd = 'component convert '; 15 | var cmds = glob.sync(templatesGlobStr).map(function (file) { 16 | return cmd + file; 17 | }); 18 | jake.exec(cmds, { printStdout: true }, function () { 19 | console.log('convert success!'); 20 | complete(); 21 | }); 22 | }); 23 | 24 | desc('Build components'); 25 | task('build', ['install', 'convert'], { async: true }, function () { 26 | jake.exec('component build -v --dev', { printStdout: true }, function () { 27 | console.log('build success!'); 28 | complete(); 29 | }); 30 | }); 31 | 32 | task('Clean generated stuff'); 33 | task('clean', { async: true }, function () { 34 | var glob = require('glob'); 35 | var cmd = 'rm -rf '; 36 | var cmds = [cmd + 'components']; 37 | cmds = cmds.concat(glob.sync(templatesGlobStr).map(function (file) { 38 | return cmd + file.replace('.html', '.js'); 39 | })); 40 | jake.exec(cmds, { printStdout: true }, function () { 41 | console.log('clean success!'); 42 | complete(); 43 | }) 44 | }); 45 | 46 | task('minify', { async: true }, function () { 47 | var Builder = require('component-builder'); 48 | var minify = require('component-minify'); 49 | var fs = require('fs'); 50 | var path = require('path'); 51 | var mkdir = require('mkdirp'); 52 | var rimraf = require('rimraf'); 53 | 54 | var DIST = 'dist'; 55 | rimraf.sync(DIST); 56 | 57 | var builddir = path.join(DIST, 'build'); 58 | 59 | var builder = new Builder(__dirname).use(minify); 60 | builder.copyAssetsTo(builddir); 61 | builder.build(function (err, res) { 62 | if (err) throw err; 63 | 64 | mkdir(builddir); 65 | 66 | var js = res.require + res.js; 67 | fs.writeFileSync(path.join(builddir, 'build.js'), js); 68 | fs.writeFileSync(path.join(builddir, 'build.css'), res.css); 69 | fs.writeFileSync( 70 | path.join(DIST, 'index.html'), 71 | fs.readFileSync('index.html') 72 | ); 73 | 74 | function copyAssets(dirName) { 75 | var dir = path.join(DIST, dirName); 76 | mkdir(dir); 77 | 78 | fs.readdirSync(dirName).forEach(function (f) { 79 | fs.writeFileSync( 80 | path.join(dir, f), 81 | fs.readFileSync(path.join(dirName, f)) 82 | ); 83 | }); 84 | } 85 | copyAssets('img'); 86 | copyAssets('audio'); 87 | 88 | complete(); 89 | }); 90 | }); 91 | 92 | // For this to work on Windows, patch jake as follows: 93 | // 94 | // jake/lib/watch_task.js:23 95 | // - return item == filePath; 96 | // + return item.split(/[\\\/]/).join('/') == filePath.split(/[\\\/]/).join('/'); 97 | // 98 | // jake/lib/task/task.js:162 99 | // + this._currentPrereqIndex = 0; 100 | // 101 | // jake/node_modules/utilities/lib/file.js:201 102 | // - if (inclPat.test(p) && !exclPat.test(p)) { 103 | // + if (p && inclPat.test(p) && !exclPat.test(p)) { 104 | watchTask(['build'], function () { 105 | this.watchFiles.include('lib/*/template.html'); 106 | 107 | this.watchFiles.exclude(/^build\b/); 108 | this.watchFiles.exclude(/^components\b/); 109 | this.watchFiles.exclude(/\btemplate\.js$/); 110 | }); 111 | -------------------------------------------------------------------------------- /app/Makefile: -------------------------------------------------------------------------------- 1 | SRC = $(wildcard lib/*/*.js) 2 | CSS = $(wildcard lib/*/*.css) 3 | HTML = $(wildcard lib/*/*.html) 4 | COMPONENTJSON = $(wildcard lib/*/component.json) 5 | TEMPLATES = $(HTML:.html=.js) 6 | 7 | build: components $(SRC) $(CSS) $(TEMPLATES) 8 | @echo building 9 | @component build --dev 10 | 11 | components: component.json $(COMPONENTJSON) 12 | @echo installing 13 | @component install 14 | 15 | %.js: %.html 16 | @echo converting 17 | @component convert $< 18 | 19 | clean: 20 | @echo cleaning 21 | rm -fr build components $(TEMPLATES) 22 | 23 | .PHONY: clean -------------------------------------------------------------------------------- /app/README.md: -------------------------------------------------------------------------------- 1 | 2 | ## Setup 3 | 4 | Install [component](https://github.com/component) 5 | 6 | npm install component -g 7 | 8 | Run 9 | 10 | make 11 | 12 | open `index.html` in your browser. 13 | 14 | 15 | Install [watch](https://github.com/visionmedia/watch) for a nicer workflow and run 16 | 17 | watch make 18 | 19 | 20 | To build for production 21 | 22 | npm install -g jake 23 | npm install 24 | jake minify 25 | 26 | ## How does this work? 27 | 28 | Uses [component](https://github.com/component) to manage third party deps, modules, and building. 29 | 30 | ### Structure 31 | 32 | `boot` is the main app entry point, any new modules should be created `component create` and 33 | required from other modules. It uses CommonJS module pattern which is what node uses. Look at the 34 | sample apps sections in the component/component page to learn more about the file structure. 35 | 36 | ### Third party module registry 37 | 38 | component search $MODULE_NAME 39 | 40 | http://component.io/ 41 | 42 | https://github.com/component 43 | -------------------------------------------------------------------------------- /app/audio/achievement.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/achievement.mp3 -------------------------------------------------------------------------------- /app/audio/achievement.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/achievement.ogg -------------------------------------------------------------------------------- /app/audio/achievement.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/achievement.wav -------------------------------------------------------------------------------- /app/audio/click.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/click.mp3 -------------------------------------------------------------------------------- /app/audio/click.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/click.ogg -------------------------------------------------------------------------------- /app/audio/click.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/click.wav -------------------------------------------------------------------------------- /app/audio/coin-1.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/coin-1.mp3 -------------------------------------------------------------------------------- /app/audio/coin-1.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/coin-1.ogg -------------------------------------------------------------------------------- /app/audio/coin-1.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/coin-1.wav -------------------------------------------------------------------------------- /app/audio/coin-2.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/coin-2.mp3 -------------------------------------------------------------------------------- /app/audio/coin-2.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/coin-2.ogg -------------------------------------------------------------------------------- /app/audio/coin-2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/coin-2.wav -------------------------------------------------------------------------------- /app/audio/coin-3.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/coin-3.mp3 -------------------------------------------------------------------------------- /app/audio/coin-3.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/coin-3.ogg -------------------------------------------------------------------------------- /app/audio/coin-3.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/coin-3.wav -------------------------------------------------------------------------------- /app/audio/defeat.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/defeat.mp3 -------------------------------------------------------------------------------- /app/audio/defeat.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/defeat.ogg -------------------------------------------------------------------------------- /app/audio/defeat.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/defeat.wav -------------------------------------------------------------------------------- /app/audio/end.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/end.mp3 -------------------------------------------------------------------------------- /app/audio/end.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/end.ogg -------------------------------------------------------------------------------- /app/audio/end.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/end.wav -------------------------------------------------------------------------------- /app/audio/flawless-victory.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/flawless-victory.mp3 -------------------------------------------------------------------------------- /app/audio/flawless-victory.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/flawless-victory.ogg -------------------------------------------------------------------------------- /app/audio/flawless-victory.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/flawless-victory.wav -------------------------------------------------------------------------------- /app/audio/guess-2.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/guess-2.mp3 -------------------------------------------------------------------------------- /app/audio/guess-2.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/guess-2.ogg -------------------------------------------------------------------------------- /app/audio/guess-2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/guess-2.wav -------------------------------------------------------------------------------- /app/audio/guess.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/guess.mp3 -------------------------------------------------------------------------------- /app/audio/guess.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/guess.ogg -------------------------------------------------------------------------------- /app/audio/guess.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/guess.wav -------------------------------------------------------------------------------- /app/audio/miss-2.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/miss-2.mp3 -------------------------------------------------------------------------------- /app/audio/miss-2.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/miss-2.ogg -------------------------------------------------------------------------------- /app/audio/miss-2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/miss-2.wav -------------------------------------------------------------------------------- /app/audio/miss.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/miss.mp3 -------------------------------------------------------------------------------- /app/audio/miss.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/miss.ogg -------------------------------------------------------------------------------- /app/audio/miss.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/miss.wav -------------------------------------------------------------------------------- /app/audio/power-commit.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/power-commit.mp3 -------------------------------------------------------------------------------- /app/audio/power-commit.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/power-commit.ogg -------------------------------------------------------------------------------- /app/audio/power-commit.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/power-commit.wav -------------------------------------------------------------------------------- /app/audio/power-half.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/power-half.mp3 -------------------------------------------------------------------------------- /app/audio/power-half.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/power-half.ogg -------------------------------------------------------------------------------- /app/audio/power-half.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/power-half.wav -------------------------------------------------------------------------------- /app/audio/power-repo.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/power-repo.mp3 -------------------------------------------------------------------------------- /app/audio/power-repo.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/power-repo.ogg -------------------------------------------------------------------------------- /app/audio/power-repo.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/power-repo.wav -------------------------------------------------------------------------------- /app/audio/power-time.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/power-time.mp3 -------------------------------------------------------------------------------- /app/audio/power-time.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/power-time.ogg -------------------------------------------------------------------------------- /app/audio/power-time.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/power-time.wav -------------------------------------------------------------------------------- /app/audio/timer-beep-2.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/timer-beep-2.mp3 -------------------------------------------------------------------------------- /app/audio/timer-beep-2.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/timer-beep-2.ogg -------------------------------------------------------------------------------- /app/audio/timer-beep-2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/timer-beep-2.wav -------------------------------------------------------------------------------- /app/audio/timer-beep.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/timer-beep.mp3 -------------------------------------------------------------------------------- /app/audio/timer-beep.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/timer-beep.ogg -------------------------------------------------------------------------------- /app/audio/timer-beep.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/timer-beep.wav -------------------------------------------------------------------------------- /app/audio/timer-tick.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/timer-tick.mp3 -------------------------------------------------------------------------------- /app/audio/timer-tick.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/timer-tick.ogg -------------------------------------------------------------------------------- /app/audio/timer-tick.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/timer-tick.wav -------------------------------------------------------------------------------- /app/audio/victory.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/victory.mp3 -------------------------------------------------------------------------------- /app/audio/victory.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/victory.ogg -------------------------------------------------------------------------------- /app/audio/victory.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/audio/victory.wav -------------------------------------------------------------------------------- /app/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "guesshub", 3 | "description": "guess the commit", 4 | "version": "1.0.0", 5 | "local": [ 6 | "boot" 7 | ], 8 | "paths": [ 9 | "lib" 10 | ], 11 | "remotes": [], 12 | "dependencies": { 13 | "enricomarino/css-reset": "*", 14 | "FortAwesome/Font-Awesome": "*" 15 | } 16 | } -------------------------------------------------------------------------------- /app/img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/img/favicon.png -------------------------------------------------------------------------------- /app/img/type.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/max99x/guesshub/74f0160d27dc02ff8e411bd07fd5c5448fd513e0/app/img/type.png -------------------------------------------------------------------------------- /app/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |
')
80 | .find('code')
81 | .addClass('language-' + language)
82 | .text(code.join('\n'))
83 | .get(0);
84 |
85 | prism.highlightElement(codeEl, false);
86 | $(codeEl).html().split('\n').forEach(function (highlightedLine, i) {
87 | model.diff_lines[i].content = highlightedLine;
88 | });
89 |
90 | this.$el = $(template.render(model));
91 |
92 | var lines = $('.line', this.$el);
93 | setTimeout(function() {
94 | lines.each(function() {
95 | if ($(this).hasClass('del')) {
96 | animate.in(this, 'bounce-left');
97 | } else if ($(this).hasClass('ins')) {
98 | animate.in(this, 'bounce-right');
99 | }
100 | });
101 | }, 1);
102 | };
103 |
104 | CommitDisplay.prototype._getCommitLanguage = function() {
105 | var ext = /\.([^.]+)$/.exec(this.model.filename());
106 | ext = (ext ? ext[1] : '').toLowerCase().trim();
107 |
108 | var lang = {
109 | '' : null,
110 | 'c' : 'c',
111 | 'h' : 'c',
112 | 'cpp' : 'cpp',
113 | 'hpp' : 'cpp',
114 | 'cxx' : 'cpp',
115 | 'hxx' : 'cpp',
116 | 'cc' : 'cpp',
117 | 'vim' : 'clike',
118 | 'pbxproj' : 'clike',
119 | 'm' : 'clike',
120 | 'go' : 'clike',
121 | 'coffee' : 'coffeescript',
122 | 'coffeescript' : 'coffeescript',
123 | 'litcoffee' : 'coffeescript',
124 | 'cs' : 'csharp',
125 | 'css' : 'css',
126 | 'less' : 'css',
127 | 'd' : 'd',
128 | 'hs' : 'haskell',
129 | 'lhs' : 'haskell',
130 | 'html' : 'html',
131 | 'xml' : 'markup',
132 | 'java' : 'java',
133 | 'scala' : 'java',
134 | 'js' : 'javascript',
135 | 'json' : 'javascript',
136 | 'ts' : 'javascript',
137 | 'lua' : 'lua',
138 | 'php' : 'php',
139 | 'phtml' : 'php',
140 | 'py' : 'python',
141 | 'pyw' : 'python',
142 | 'r' : 'r',
143 | 'rb' : 'ruby',
144 | 'scm' : 'scheme',
145 | 'sh' : 'bash',
146 | 'bash' : 'bash',
147 | 'zsh' : 'bash',
148 | 'sql' : 'sql',
149 | 'scss' : 'scss',
150 | 'groovy' : 'groovy',
151 | 'gvy' : 'groovy',
152 | 'gy' : 'groovy',
153 | 'gsh' : 'gsh',
154 | 'vsh' : 'gsh',
155 | 'fsh' : 'gsh',
156 | 'shader' : 'gsh',
157 | 'feature' : 'gherkin'
158 | }[ext] || 'generic';
159 | return lang;
160 | };
161 |
162 |
163 | module.exports = CommitDisplay;
164 |
--------------------------------------------------------------------------------
/app/lib/commit-display/component.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "commit-display",
3 | "description": "Displays commit info",
4 | "dependencies": {
5 | "component/jquery": "*",
6 | "twitter/hogan.js": "*",
7 | "amasad/prism": "*",
8 | "ianstormtaylor/animate": "*"
9 | },
10 | "development": {},
11 | "main": "commit-display.js",
12 | "scripts": [
13 | "commit-display.js",
14 | "template.js"
15 | ],
16 | "styles": [
17 | "commit-display.css"
18 | ]
19 | }
--------------------------------------------------------------------------------
/app/lib/commit-display/template.html:
--------------------------------------------------------------------------------
1 | {{block_name}}
19 | {{{content}}}
25 |