Skip to content
Browse files

Gruntify all the things

Use Grunt.js for building this library
  • Loading branch information...
1 parent bc5a064 commit bb85f160d33a800c38a7295460a2057a92525989 @pangratz pangratz committed
View
3 .gitignore
@@ -1 +1,4 @@
*.swp
+/node_modules/
+tmp
+bin/*tests.js
View
30 .jshintrc
@@ -0,0 +1,30 @@
+{
+ "strict": false,
+ "globalstrict": false,
+ "curly": true,
+ "eqeqeq": true,
+ "immed": true,
+ "latedef": true,
+ "newcap": true,
+ "noarg": true,
+ "sub": true,
+ "undef": true,
+ "unused": true,
+ "boss": true,
+ "eqnull": true,
+ "node": true,
+ "es5": true,
+
+ "globals": {
+ "Ember": true,
+ "Em": true,
+ "DS": false,
+ "IHID": true,
+
+ "module": true,
+ "test": true,
+ "ok": true,
+ "equal": true,
+ "deepEqual": true
+ }
+}
View
140 Gruntfile.js
@@ -0,0 +1,140 @@
+module.exports = function(grunt) {
+ "use strict";
+
+ // Project configuration.
+ grunt.initConfig({
+ // Metadata.
+ pkg: grunt.file.readJSON('package.json'),
+ banner: '/*! <%= pkg.description %>\n' +
+ '* (c) <%= grunt.template.today("yyyy") %> Jeremy Walker <jez.walker@gmail.com>\n' +
+ '* MIT Licensed.\n' +
+ '*\n' +
+ '* Written by iHiD (Jeremy Walker) - Based on an idea by @pangratz\n' +
+ '*\n' +
+ '* <%= pkg.homepage %>\n' +
+ '*/\n',
+
+ clean: {
+ files: ['bin', 'tmp']
+ },
+ coffee: {
+ options: {
+ separator: ';'
+ },
+ compile: {
+ files: {
+ 'tmp/<%= pkg.name %>.js': ['lib/src/<%= pkg.name %>.coffee', 'lib/src/**/*.coffee'],
+ 'bin/<%= pkg.name %>-tests.js': ['lib/tests/<%= pkg.name %>.coffee', 'lib/tests/**/*.coffee']
+ }
+ }
+ },
+ uglify: {
+ options: {
+ banner: '<%= banner %>'
+ },
+ dist: {
+ src: 'tmp/<%= pkg.name %>.js',
+ dest: 'bin/<%= pkg.name %>.js',
+ options: {
+ mangle: false,
+ beautify: true,
+ compress: false
+ }
+ },
+ minified: {
+ src: 'tmp/<%= pkg.name %>-stripped.js',
+ dest: 'bin/<%= pkg.name %>.min.js'
+ },
+ },
+ qunit: {
+ files: ['tests/**/*.html']
+ },
+ jshint: {
+ options: {
+ jshintrc: '.jshintrc'
+ },
+ gruntfile: {
+ src: 'Gruntfile.js'
+ }
+ },
+ coffeelint: {
+ lib: ['lib/**/*.coffee']
+ },
+ watch: {
+ gruntfile: {
+ files: '<%= jshint.gruntfile.src %>',
+ tasks: ['jshint:gruntfile']
+ },
+ lib: {
+ files: 'lib/**/*.*',
+ tasks: ['jshint', 'coffee']
+ }
+ },
+ strip: {
+ lib: {
+ src: 'tmp/<%= pkg.name %>.js',
+ dest: 'tmp/<%= pkg.name %>-stripped.js'
+ }
+ },
+ connect: {
+ server: {}
+ }
+ });
+
+ // These plugins provide necessary tasks.
+ grunt.loadNpmTasks('grunt-contrib-clean');
+ grunt.loadNpmTasks('grunt-contrib-coffee');
+ grunt.loadNpmTasks('grunt-contrib-concat');
+ grunt.loadNpmTasks('grunt-contrib-connect');
+ grunt.loadNpmTasks('grunt-contrib-jshint');
+ grunt.loadNpmTasks('grunt-contrib-qunit');
+ grunt.loadNpmTasks('grunt-contrib-uglify');
+ grunt.loadNpmTasks('grunt-contrib-watch');
+ grunt.loadNpmTasks('grunt-coffeelint');
+
+ // custom tasks
+ grunt.registerTask('hint', ['jshint', 'coffeelint']);
+ grunt.registerTask('test', ['coffee', 'qunit']);
+ grunt.registerTask('default', ['clean', 'hint', 'coffee', 'qunit', 'strip', 'uglify']);
+
+ grunt.registerMultiTask('strip', "Strip all Ember debug statements", function() {
+ // make this configurable or better: create own Grunt.js task for this
+ var debugStatements = [
+ "Ember.assert",
+ "Ember.debug",
+ "Ember.warn",
+ "Ember.deprecate",
+ "Ember.Logger.log",
+ "Ember.Logger.warn",
+ "Ember.Logger.error",
+ "Ember.Logger.info",
+ "Ember.Logger.debug",
+ "console.log"
+ ];
+
+ var stripped = function(src) {
+ var falafel = require('falafel');
+
+ var isExpression = function(node) { return node.type === 'ExpressionStatement'; };
+ var isCallExpression = function(node) { return node.type === 'CallExpression'; };
+ var getCalleeExpression = function(node) {
+ if (node.type === 'MemberExpression') { return getCalleeExpression(node.object) + '.' + node.property.name; }
+ else if (node.type === 'Identifier') { return node.name; }
+ };
+ var isEmberDebugStatement = function(node) {
+ var callee = getCalleeExpression(node);
+ return debugStatements.indexOf(callee) !== -1;
+ };
+
+ return falafel(src, function (node) {
+ if (isExpression(node) && isCallExpression(node.expression) && isEmberDebugStatement(node.expression.callee)) {
+ node.update("");
+ }
+ });
+ };
+
+ // TODO refactor this!!
+ var output = stripped(grunt.file.read(this.data.src));
+ grunt.file.write(this.data.dest, output);
+ });
+};
View
9 README.md
@@ -68,6 +68,15 @@ didInsertElement: function() {
This resets the page to 1. You'll need to add whatever parameters you need as per above.
+## Development
+
+This project uses [Grunt.js](http://gruntjs.com/), so after checking out the repo, a simple
+`npm install` will install all dependencies needed to build this library.
+
+The source files are located in `lib/src` and the tests are in `lib/tests`.
+
+To run the tests invoke `grunt test`.
+
## Contributing
Add issues, send pull requests. All the normal stuff. VERY happy to hear from you!
View
0 bin/ember.infinite-pagination.js → bin/ember-infinite-pagination.js
File renamed without changes.
View
0 bin/ember.infinite-pagination.min.js → bin/ember-infinite-pagination.min.js
File renamed without changes.
View
0 lib/ember.infinite-pagination.coffee → lib/src/ember-infinite-pagination.coffee
File renamed without changes.
View
4 lib/tests/ember-infinite-pagination_test.coffee
@@ -0,0 +1,4 @@
+module "IHID"
+
+test "it is defined and an Ember.Namespace", ->
+ ok IHID, "IHID is defined"
View
27 package.json
@@ -2,15 +2,32 @@
"name": "ember-infinite-pagination",
"author": "Jeremy Walker",
"version": "0.0.1",
+ "homepage": "https://github.com/iHiD/ember-infinite-pagination",
"description": "Infinite Pagination for EmberJS",
- "main": "ember.infinite-pagination.min.js",
+ "main": "ember-infinite-pagination.min.js",
"keywords": [
"emberjs",
"pagination",
"infinite pagination"
],
- "repository" : {
- "type" : "git",
- "url" : "git@github.com:iHiD/ember-infinite-pagination.git"
- }
+ "repository": {
+ "type": "git",
+ "url": "git@github.com:iHiD/ember-infinite-pagination.git"
+ },
+ "bugs": {
+ "url": "https://github.com/iHiD/ember-infinite-pagination/issues"
+ },
+ "devDependencies": {
+ "grunt": "~0.4.1",
+ "grunt-contrib-clean": "~0.4.0",
+ "grunt-contrib-coffee": "~0.6.4",
+ "grunt-contrib-concat": "~0.1.2",
+ "grunt-contrib-connect": "~0.2.0",
+ "grunt-contrib-jshint": "~0.1.1",
+ "grunt-contrib-qunit": "~0.1.1",
+ "grunt-contrib-uglify": "~0.1.1",
+ "grunt-contrib-watch": "~0.2.0",
+ "grunt-coffeelint": "~0.0.6",
+ "falafel": "~0.2.1"
+ }
}
View
18 tests/index.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>ember-infinite-pagination tests</title>
+ <link rel="stylesheet" href="resources/qunit.css">
+</head>
+<body>
+ <div id="qunit"></div>
+ <div id="qunit-fixture"></div>
+ <script src="vendor/jquery.js"></script>
+ <script src="vendor/handlebars.js"></script>
+ <script src="vendor/ember.js"></script>
+ <script src="../tmp/ember-infinite-pagination.js"></script>
+ <script src="resources/qunit.js"></script>
+ <script src="../bin/ember-infinite-pagination-tests.js"></script>
+</body>
+</html>
View
244 tests/resources/qunit.css
@@ -0,0 +1,244 @@
+/**
+ * QUnit v1.11.0 - A JavaScript Unit Testing Framework
+ *
+ * http://qunitjs.com
+ *
+ * Copyright 2012 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+/** Font Family and Sizes */
+
+#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
+ font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
+}
+
+#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
+#qunit-tests { font-size: smaller; }
+
+
+/** Resets */
+
+#qunit-tests, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter {
+ margin: 0;
+ padding: 0;
+}
+
+
+/** Header */
+
+#qunit-header {
+ padding: 0.5em 0 0.5em 1em;
+
+ color: #8699a4;
+ background-color: #0d3349;
+
+ font-size: 1.5em;
+ line-height: 1em;
+ font-weight: normal;
+
+ border-radius: 5px 5px 0 0;
+ -moz-border-radius: 5px 5px 0 0;
+ -webkit-border-top-right-radius: 5px;
+ -webkit-border-top-left-radius: 5px;
+}
+
+#qunit-header a {
+ text-decoration: none;
+ color: #c2ccd1;
+}
+
+#qunit-header a:hover,
+#qunit-header a:focus {
+ color: #fff;
+}
+
+#qunit-testrunner-toolbar label {
+ display: inline-block;
+ padding: 0 .5em 0 .1em;
+}
+
+#qunit-banner {
+ height: 5px;
+}
+
+#qunit-testrunner-toolbar {
+ padding: 0.5em 0 0.5em 2em;
+ color: #5E740B;
+ background-color: #eee;
+ overflow: hidden;
+}
+
+#qunit-userAgent {
+ padding: 0.5em 0 0.5em 2.5em;
+ background-color: #2b81af;
+ color: #fff;
+ text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
+}
+
+#qunit-modulefilter-container {
+ float: right;
+}
+
+/** Tests: Pass/Fail */
+
+#qunit-tests {
+ list-style-position: inside;
+}
+
+#qunit-tests li {
+ padding: 0.4em 0.5em 0.4em 2.5em;
+ border-bottom: 1px solid #fff;
+ list-style-position: inside;
+}
+
+#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running {
+ display: none;
+}
+
+#qunit-tests li strong {
+ cursor: pointer;
+}
+
+#qunit-tests li a {
+ padding: 0.5em;
+ color: #c2ccd1;
+ text-decoration: none;
+}
+#qunit-tests li a:hover,
+#qunit-tests li a:focus {
+ color: #000;
+}
+
+#qunit-tests li .runtime {
+ float: right;
+ font-size: smaller;
+}
+
+.qunit-assert-list {
+ margin-top: 0.5em;
+ padding: 0.5em;
+
+ background-color: #fff;
+
+ border-radius: 5px;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+}
+
+.qunit-collapsed {
+ display: none;
+}
+
+#qunit-tests table {
+ border-collapse: collapse;
+ margin-top: .2em;
+}
+
+#qunit-tests th {
+ text-align: right;
+ vertical-align: top;
+ padding: 0 .5em 0 0;
+}
+
+#qunit-tests td {
+ vertical-align: top;
+}
+
+#qunit-tests pre {
+ margin: 0;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+}
+
+#qunit-tests del {
+ background-color: #e0f2be;
+ color: #374e0c;
+ text-decoration: none;
+}
+
+#qunit-tests ins {
+ background-color: #ffcaca;
+ color: #500;
+ text-decoration: none;
+}
+
+/*** Test Counts */
+
+#qunit-tests b.counts { color: black; }
+#qunit-tests b.passed { color: #5E740B; }
+#qunit-tests b.failed { color: #710909; }
+
+#qunit-tests li li {
+ padding: 5px;
+ background-color: #fff;
+ border-bottom: none;
+ list-style-position: inside;
+}
+
+/*** Passing Styles */
+
+#qunit-tests li li.pass {
+ color: #3c510c;
+ background-color: #fff;
+ border-left: 10px solid #C6E746;
+}
+
+#qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; }
+#qunit-tests .pass .test-name { color: #366097; }
+
+#qunit-tests .pass .test-actual,
+#qunit-tests .pass .test-expected { color: #999999; }
+
+#qunit-banner.qunit-pass { background-color: #C6E746; }
+
+/*** Failing Styles */
+
+#qunit-tests li li.fail {
+ color: #710909;
+ background-color: #fff;
+ border-left: 10px solid #EE5757;
+ white-space: pre;
+}
+
+#qunit-tests > li:last-child {
+ border-radius: 0 0 5px 5px;
+ -moz-border-radius: 0 0 5px 5px;
+ -webkit-border-bottom-right-radius: 5px;
+ -webkit-border-bottom-left-radius: 5px;
+}
+
+#qunit-tests .fail { color: #000000; background-color: #EE5757; }
+#qunit-tests .fail .test-name,
+#qunit-tests .fail .module-name { color: #000000; }
+
+#qunit-tests .fail .test-actual { color: #EE5757; }
+#qunit-tests .fail .test-expected { color: green; }
+
+#qunit-banner.qunit-fail { background-color: #EE5757; }
+
+
+/** Result */
+
+#qunit-testresult {
+ padding: 0.5em 0.5em 0.5em 2.5em;
+
+ color: #2b81af;
+ background-color: #D2E0E6;
+
+ border-bottom: 1px solid white;
+}
+#qunit-testresult .module-name {
+ font-weight: bold;
+}
+
+/** Fixture */
+
+#qunit-fixture {
+ position: absolute;
+ top: -10000px;
+ left: -10000px;
+ width: 1000px;
+ height: 1000px;
+}
View
2,152 tests/resources/qunit.js
2,152 additions, 0 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
View
27,756 tests/vendor/ember.js
27,756 additions, 0 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
View
2,201 tests/vendor/handlebars.js
2,201 additions, 0 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
View
9,597 tests/vendor/jquery.js
9,597 additions, 0 deletions not shown because the diff is too large. Please use a local Git client to view these changes.

0 comments on commit bb85f16

Please sign in to comment.
Something went wrong with that request. Please try again.