diff --git a/.jshintignore b/.jshintignore new file mode 100644 index 000000000..a69f6a1f5 --- /dev/null +++ b/.jshintignore @@ -0,0 +1,15 @@ +app/assets/javascripts/defer/html-sanitizer-bundle.js +app/assets/javascripts/locales/ +lib/autospec/run-qunit.js +lib/headless-ember.js +lib/javascripts/locale/ +lib/javascripts/messageformat.js +lib/javascripts/moment.js +lib/javascripts/moment_locale/ +public/javascripts/ +spec/phantom_js/smoke_test.js +test/javascripts/helpers/assertions.js +test/javascripts/helpers/parse_html.js +test/javascripts/helpers/qunit_helpers.js +test/javascripts/test_helper.js +vendor/ diff --git a/.travis.yml b/.travis.yml index 2d0c72313..1e28bb360 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,9 @@ language: ruby rvm: - 2.0.0 - 2.1.1 +before_install: + - npm i -g jshint + - jshint . before_script: - psql -c 'create database discourse_test;' -U postgres - export DISCOURSE_HOSTNAME=www.example.com diff --git a/app/assets/javascripts/locales/i18n.js b/app/assets/javascripts/locales/i18n.js index d8591f327..05edb4fe2 100644 --- a/app/assets/javascripts/locales/i18n.js +++ b/app/assets/javascripts/locales/i18n.js @@ -1,40 +1,28 @@ // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf if (!Array.prototype.indexOf) { - Array.prototype.indexOf = function(searchElement /*, fromIndex */) { - "use strict"; - - if (this === void 0 || this === null) { - throw new TypeError(); + Array.prototype.indexOf = function (searchElement, fromIndex) { + if ( this === undefined || this === null ) { + throw new TypeError( '"this" is null or not defined' ); } - var t = Object(this); - var len = t.length >>> 0; + var length = this.length >>> 0; // Hack to convert object.length to a UInt32 - if (len === 0) { - return -1; + fromIndex = +fromIndex || 0; + + if (Math.abs(fromIndex) === Infinity) { + fromIndex = 0; } - var n = 0; - if (arguments.length > 0) { - n = Number(arguments[1]); - if (n !== n) { // shortcut for verifying if it's NaN - n = 0; - } else if (n !== 0 && n !== (Infinity) && n !== -(Infinity)) { - n = (n > 0 || -1) * Math.floor(Math.abs(n)); + if (fromIndex < 0) { + fromIndex += length; + if (fromIndex < 0) { + fromIndex = 0; } } - if (n >= len) { - return -1; - } - - var k = n >= 0 - ? n - : Math.max(len - Math.abs(n), 0); - - for (; k < len; k++) { - if (k in t && t[k] === searchElement) { - return k; + for (;fromIndex < length; fromIndex++) { + if (this[fromIndex] === searchElement) { + return fromIndex; } } diff --git a/plugins/poll/assets/javascripts/poll_ui.js b/plugins/poll/assets/javascripts/poll_ui.js index 891254dc0..fdafc7ec2 100644 --- a/plugins/poll/assets/javascripts/poll_ui.js +++ b/plugins/poll/assets/javascripts/poll_ui.js @@ -14,7 +14,7 @@ var Poll = Discourse.Model.extend({ options.push(Ember.Object.create({ option: option, votes: json["options"][option], - checked: (option == selectedOption) + checked: (option === selectedOption) })); }); this.set('options', options); @@ -22,7 +22,7 @@ var Poll = Discourse.Model.extend({ saveVote: function(option) { this.get('options').forEach(function(opt) { - opt.set('checked', opt.get('option') == option); + opt.set('checked', opt.get('option') === option); }); return Discourse.ajax("/poll", { @@ -99,7 +99,7 @@ Discourse.PostView.reopen({ var view = initializePollView(this); var pollContainer = $post.find(".poll-ui:first"); - if (pollContainer.length == 0) { + if (pollContainer.length === 0) { pollContainer = $post.find("ul:first"); }