From 14a7cceb27d4c5217d8fe877d9e20d1f8d1cde6d Mon Sep 17 00:00:00 2001 From: josex2r Date: Tue, 22 Dec 2015 22:12:41 +0100 Subject: [PATCH] Going to es6! --- .eslintrc | 206 +++++++ .jshintrc | 14 - Gruntfile.js | 41 +- README.md | 20 +- index.html | 130 ++-- package.json | 16 +- src/.jshintrc | 20 - src/jquery.slotmachine.js | 1210 +++++++++++++++++++------------------ test/.jshintrc | 32 - test/SlotMachine.html | 2 +- 10 files changed, 949 insertions(+), 742 deletions(-) create mode 100644 .eslintrc delete mode 100644 .jshintrc delete mode 100644 src/.jshintrc delete mode 100644 test/.jshintrc diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..0e317a9 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,206 @@ +{ + "ecmaFeatures": { + "arrowFunctions": true, + "binaryLiterals": false, + "blockBindings": true, + "classes": true, + "defaultParams": true, + "destructuring": true, + "forOf": true, + "generators": true, + "modules": false, + "objectLiteralComputedProperties": true, + "objectLiteralDuplicateProperties": false, + "objectLiteralShorthandMethods": true, + "objectLiteralShorthandProperties": true, + "octalLiterals": false, + "regexUFlag": false, + "regexYFlag": false, + "restParams": true, + "spread": true, + "superInFunctions": true, + "templateStrings": true, + "unicodePointEscapes": true, + "globalReturn": false, + "jsx": true + }, + "env": { + "jquery": true, + "browser": true, + "node": true + }, + "parser": "babel-eslint", + "plugins": [ + "babel" + ], + "rules": { + + /*Possible Errors */ + "no-cond-assign": [1, "except-parens"], + "no-console": 0, + "no-constant-condition": 1, + "no-control-regex": 1, + "no-debugger": 1, + "no-dupe-args": 1, + "no-dupe-keys": 1, + "no-duplicate-case": 0, + "no-empty-character-class": 1, + "no-empty": 1, + "no-ex-assign": 1, + "no-extra-boolean-cast": 1, + "no-extra-parens": 0, + "no-extra-semi": 1, + "no-func-assign": 1, + "no-inner-declarations": [1, "functions"], + "no-invalid-regexp": 1, + "no-irregular-whitespace": 1, + "no-negated-in-lhs": 1, + "no-obj-calls": 1, + "no-regex-spaces": 1, + "no-reserved-keys": 0, + "no-sparse-arrays": 1, + "no-unexpected-multiline": 1, + "no-unreachable": 1, + "use-isnan": 1, + "valid-typeof": 1, + + /* Best Practices */ + "accessor-pairs": 0, + "block-scoped-var": 0, // see Babel section + "complexity": 0, + "curly": [1, "all"], + "default-case": 0, + "dot-notation": [1, { "allowKeywords": true, "allowPattern": "" }], + "dot-location": [1, "property"], + "eqeqeq": 1, + "guard-for-in": 0, + "no-alert": 1, + "no-caller": 1, + "no-div-regex": 1, + "no-empty-label": 1, + "no-eq-null": 0, + "no-eval": 1, + "no-extend-native": 1, + "no-extra-bind": 1, + "no-fallthrough": 0, + "no-floating-decimal": 1, + "no-implied-eval": 1, + "no-iterator": 1, + "no-labels": 1, + "no-lone-blocks": 1, + "no-loop-func": 1, + "no-multi-spaces": 1, + "no-multi-str": 1, + "no-native-reassign": 1, + "no-new-func": 1, + "no-new-wrappers": 1, + "no-new": 1, + "no-octal-escape": 1, + "no-octal": 1, + "no-param-reassign": 0, + "no-process-env": 0, + "no-proto": 1, + "no-redeclare": 1, + "no-return-assign": 1, + "no-script-url": 1, + "no-self-compare": 1, + "no-sequences": 1, + "no-throw-literal": 1, + "no-unused-expressions": 0, + "no-void": 0, + "no-warning-comments": [1, { "terms": ["todo", "tofix"], "location": "start" }], + "no-with": 1, + "radix": 1, + "vars-on-top": 1, + "wrap-iife": [1, "inside"], + "yoda": [1, "never"], + + /* Strict Mode */ + "strict": [1, "never"], + + /* Variables */ + "no-catch-shadow": 0, + "no-delete-var": 1, + "no-label-var": 1, + "no-shadow": 1, + "no-undef-init": 1, + "no-undef": 1, + "no-unused-vars": [1, { "vars": "local", "args": "after-used" }], + "no-use-before-define": 1, + + /* Node.js */ + "handle-callback-err": 1, + "no-mixed-requires": 1, + "no-new-require": 1, + "no-path-concat": 1, + "no-process-exit": 1, + "no-restricted-modules": [1, ""], // add any unwanted Node.js core modules + "no-sync": 1, + + /* Stylistic Issues */ + "array-bracket-spacing": [1, "never"], + "camelcase": [1, { "properties": "always" }], + "comma-spacing": [1, { "before": false, "after": true }], + "comma-style": [1, "last"], + "computed-property-spacing": 0, + "consistent-this": 0, + "eol-last": 1, + "func-names": 1, + "func-style": 0, + "key-spacing": [1, { "beforeColon": false, "afterColon": true }], + "linebreak-style": 0, + "max-nested-callbacks": [0, 3], + "new-cap": 0, // see Babel section + "new-parens": 1, + "newline-after-var": 0, + "no-array-constructor": 1, + "no-continue": 1, + "no-inline-comments": 0, + "no-lonely-if": 1, + "no-multiple-empty-lines": [1, { "max": 1 }], + "no-nested-ternary": 0, + "no-new-object": 1, + "no-spaced-func": 1, + "no-ternary": 0, + "no-trailing-spaces": 1, + "no-underscore-dangle": 0, + "no-unneeded-ternary": 1, + "object-curly-spacing": 0, // see Babel section + "padded-blocks": [0, "never"], + "quote-props": [0, "as-needed"], + "quotes": [1, "single"], + "semi-spacing": [1, { "before": false, "after": true }], + "semi": [1, "always"], + "sort-vars": 0, + "space-after-keywords": 0, + "space-before-blocks": [1, "always"], + "space-in-parens": [1, "never"], + "space-infix-ops": 1, + "space-return-throw-case": 1, + "space-unary-ops": 0, + "spaced-comment": [1, "always"], + "wrap-regex": 1, + + /* ECMAScript 6 */ + "constructor-super": 1, + "generator-star-spacing": 0, // see Babel section + "no-this-before-super": 1, + "no-var": 1, + "object-shorthand": 0, // see Babel section + "prefer-const": 1, + + /* Legacy */ + "max-depth": [0, 3], + "max-params": 0, + "max-statements": 0, + "no-bitwise": 1, + + /* Babel */ + // "babel/block-scoped-var": 1, + "babel/object-shorthand": [1, "always"], + // "babel/generator-star": 1, // deprecated + "babel/generator-star-spacing": [1, "after"], + "babel/object-curly-spacing": [1, "always"], + // "babel/space-in-brackets": 1, // deprecated + } +} diff --git a/.jshintrc b/.jshintrc deleted file mode 100644 index 8c86fc7..0000000 --- a/.jshintrc +++ /dev/null @@ -1,14 +0,0 @@ -{ - "curly": true, - "eqeqeq": true, - "immed": true, - "latedef": true, - "newcap": true, - "noarg": true, - "sub": true, - "undef": true, - "unused": true, - "boss": true, - "eqnull": true, - "node": true -} diff --git a/Gruntfile.js b/Gruntfile.js index 38e4ba5..e38f6b9 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -13,7 +13,12 @@ module.exports = function(grunt) { ' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %> */\n', // Task configuration. clean: { - files: ['dist'] + dist: { + src: 'dist' + }, + tmp: { + src: 'tmp' + } }, concat: { options: { @@ -21,7 +26,7 @@ module.exports = function(grunt) { stripBanners: true }, dist: { - src: ['src/jquery.<%= pkg.name %>.js'], + src: ['dist/jquery.<%= pkg.name %>.js'], dest: 'dist/jquery.<%= pkg.name %>.js' }, }, @@ -37,23 +42,14 @@ module.exports = function(grunt) { qunit: { files: ['test/**/*.html'] }, - jshint: { + eslint: { gruntfile: { - options: { - jshintrc: '.jshintrc' - }, src: 'Gruntfile.js' }, src: { - options: { - jshintrc: 'src/.jshintrc' - }, src: ['src/**/*.js'] }, test: { - options: { - jshintrc: 'test/.jshintrc' - }, src: ['test/**/*.js'] }, }, @@ -71,6 +67,18 @@ module.exports = function(grunt) { tasks: ['jshint:test', 'qunit'] }, }, + babel: { + options: { + sourceMap: false, + presets: ['es2015'], + //plugins: ['transform-es2015-modules-amd'] + }, + dist: { + files: { + 'dist/jquery.<%= pkg.name %>.js': 'src/jquery.<%= pkg.name %>.js' + } + } + } }); // These plugins provide necessary tasks. @@ -78,13 +86,14 @@ module.exports = function(grunt) { grunt.loadNpmTasks('grunt-contrib-concat'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-qunit'); - grunt.loadNpmTasks('grunt-contrib-jshint'); + grunt.loadNpmTasks('grunt-eslint'); grunt.loadNpmTasks('grunt-contrib-watch'); + grunt.loadNpmTasks('grunt-babel'); // Default task. - grunt.registerTask('default', ['jshint', 'qunit', 'clean', 'concat', 'uglify']); - + grunt.registerTask('default', ['eslint', 'clean:dist', 'babel', 'concat', 'qunit', 'uglify']); + // Travis CI task. - grunt.registerTask('travis', ['jshint', 'qunit', 'clean', 'concat', 'uglify']); + grunt.registerTask('travis', ['eslint', 'clean:dist', 'babel', 'concat', 'qunit', 'uglify']); }; diff --git a/README.md b/README.md index b091116..4d83df3 100644 --- a/README.md +++ b/README.md @@ -46,13 +46,19 @@ machine.prev(); //Previous element machine.next(); //Next element ``` +Stop the machine: + +```javascript +machine.stop(); +``` + Get selected element: ```javascript machine.active; //Current element index ``` -Get the next selected element: +Get the selected element if shuffling: ```javascript machine.futureActive; //Future active element index @@ -61,13 +67,19 @@ machine.futureActive; //Future active element index Check if the machine is running: ```javascript -machine.isRunning; //Returns boolean +machine.running; //Returns boolean ``` Check if the machine is stopping: ```javascript -machine.isStopping; //Returns boolean +machine.stopping; //Returns boolean +``` + +Check if the machine is visible: + +```javascript +machine.visible; //Returns boolean ``` Change spin result, if the returned value is out of bounds, the element will be randomly choosen: @@ -79,7 +91,7 @@ machine.setRandomize(foo); //foo must be a function (should return int) or an in Change spin direction, machine must not be running: ```javascript -machine.setDirection(direction); //direction must be a String ('up' || 'down') +machine.direction = direction; //direction must be a String ('up' || 'down') ``` ## Params diff --git a/index.html b/index.html index d3d507a..f6f22e0 100644 --- a/index.html +++ b/index.html @@ -8,21 +8,21 @@ - + - +