From 1eb43f73fef4b48007ac02cb66b1a8aeb3ee5779 Mon Sep 17 00:00:00 2001 From: Robin North Date: Wed, 31 Jan 2018 22:17:06 +0000 Subject: [PATCH] Code style cleanup, remove redundant comments --- index.js | 25 ++++++-------- lib/eval-script.js | 12 ++++--- lib/execute-scripts.js | 6 ++-- lib/proto/attach-form.js | 41 +++++++++++------------ lib/proto/attach-link.js | 6 ++-- lib/proto/log.js | 4 +-- lib/proto/parse-options.js | 2 +- lib/send-request.js | 8 ++--- lib/switches-selectors.js | 8 +---- lib/switches.js | 22 +------------ tests/lib/events.js | 7 ++-- tests/lib/proto/attach-form.js | 2 +- tests/lib/proto/attach-link.js | 4 +-- tests/lib/proto/parse-options.js | 56 ++++++++++++++++---------------- tests/lib/send-request.js | 4 +-- 15 files changed, 87 insertions(+), 120 deletions(-) diff --git a/index.js b/index.js index 7d20baa..34704e5 100644 --- a/index.js +++ b/index.js @@ -1,19 +1,14 @@ var clone = require("./lib/clone.js") var executeScripts = require("./lib/execute-scripts.js") - var forEachEls = require("./lib/foreach-els.js") - +var switches = require("./lib/switches") var newUid = require("./lib/uniqueid.js") -var noop = require("./lib/util/noop") -var contains = require("./lib/util/contains.js") - var on = require("./lib/events/on.js") -// var off = require("./lib/events/on.js") var trigger = require("./lib/events/trigger.js") -var defaultSwitches = require("./lib/switches") - +var contains = require("./lib/util/contains.js") +var noop = require("./lib/util/noop") var Pjax = function(options) { this.state = { @@ -22,7 +17,7 @@ var Pjax = function(options) { options: null } - var parseOptions = require("./lib/proto/parse-options.js"); + var parseOptions = require("./lib/proto/parse-options.js") parseOptions.call(this,options) this.log("Pjax options", this.options) @@ -40,7 +35,7 @@ var Pjax = function(options) { opt.url = st.state.url opt.title = st.state.title opt.history = false - opt.requestOptions = {}; + opt.requestOptions = {} opt.scrollPos = st.state.scrollPos if (st.state.uid < this.lastUid) { opt.backward = true @@ -56,7 +51,7 @@ var Pjax = function(options) { }.bind(this)) } -Pjax.switches = defaultSwitches +Pjax.switches = switches Pjax.prototype = { log: require("./lib/proto/log.js"), @@ -143,7 +138,7 @@ Pjax.prototype = { // Abort any previous request this.abortRequest(this.request) - trigger(document, "pjax:send", options); + trigger(document, "pjax:send", options) // Do the request options.requestOptions.timeout = this.options.timeout @@ -217,7 +212,7 @@ Pjax.prototype = { // http://www.w3.org/html/wg/drafts/html/master/forms.html var autofocusEl = Array.prototype.slice.call(document.querySelectorAll("[autofocus]")).pop() if (autofocusEl && document.activeElement !== autofocusEl) { - autofocusEl.focus(); + autofocusEl.focus() } // execute scripts when DOM have been completely updated @@ -285,7 +280,7 @@ Pjax.prototype = { } while (target) } } - window.scrollTo(0, curtop); + window.scrollTo(0, curtop) } else if (state.options.scrollTo !== false) { // Scroll page to top on new page load @@ -309,7 +304,7 @@ Pjax.prototype = { } } -Pjax.isSupported = require("./lib/is-supported.js"); +Pjax.isSupported = require("./lib/is-supported.js") // arguably could do `if( require("./lib/is-supported.js")()) {` but that might be a little to simple if (Pjax.isSupported()) { diff --git a/lib/eval-script.js b/lib/eval-script.js index 3e9f516..4d8f6c4 100644 --- a/lib/eval-script.js +++ b/lib/eval-script.js @@ -1,6 +1,8 @@ module.exports = function(el) { + // console.log("going to execute script", el) + var code = (el.text || el.textContent || el.innerHTML || "") - var src = (el.src || ""); + var src = (el.src || "") var parent = el.parentNode || document.querySelector("head") || document.documentElement var script = document.createElement("script") @@ -14,8 +16,8 @@ module.exports = function(el) { script.type = "text/javascript" if (src !== "") { - script.src = src; - script.async = false; // force synchronous loading of peripheral js + script.src = src + script.async = false // force asynchronous loading of peripheral js } if (code !== "") { @@ -29,11 +31,11 @@ module.exports = function(el) { } // execute - parent.appendChild(script); + parent.appendChild(script) // avoid pollution only in head or body tags if (["head", "body"].indexOf(parent.tagName.toLowerCase()) > 0) { parent.removeChild(script) } - return true; + return true } diff --git a/lib/execute-scripts.js b/lib/execute-scripts.js index d5fab5a..1f5496a 100644 --- a/lib/execute-scripts.js +++ b/lib/execute-scripts.js @@ -6,7 +6,7 @@ module.exports = function(el) { // console.log("going to execute scripts for ", el) if (el.tagName.toLowerCase() === "script") { - evalScript(el); + evalScript(el) } forEachEls(el.querySelectorAll("script"), function(script) { @@ -14,7 +14,7 @@ module.exports = function(el) { if (script.parentNode) { script.parentNode.removeChild(script) } - evalScript(script); + evalScript(script) } - }); + }) } diff --git a/lib/proto/attach-form.js b/lib/proto/attach-form.js index 5ec846e..5850222 100644 --- a/lib/proto/attach-form.js +++ b/lib/proto/attach-form.js @@ -8,7 +8,7 @@ var attrClick = "data-pjax-click-state" var formAction = function(el, event) { // Since loadUrl modifies options and we may add our own modifications below, // clone it so the changes don't persist - var options = clone(this.options); + var options = clone(this.options) // Initialize requestOptions options.requestOptions = { @@ -17,18 +17,18 @@ var formAction = function(el, event) { } // create a testable virtual link of the form action - var virtLinkElement = document.createElement("a"); - virtLinkElement.setAttribute("href", options.requestOptions.requestUrl); + var virtLinkElement = document.createElement("a") + virtLinkElement.setAttribute("href", options.requestOptions.requestUrl) // Ignore external links. if (virtLinkElement.protocol !== window.location.protocol || virtLinkElement.host !== window.location.host) { - el.setAttribute(attrClick, "external"); + el.setAttribute(attrClick, "external") return } // Ignore click if we are on an anchor on the same page if (virtLinkElement.pathname === window.location.pathname && virtLinkElement.hash.length > 0) { - el.setAttribute(attrClick, "anchor-present"); + el.setAttribute(attrClick, "anchor-present") return } @@ -40,41 +40,39 @@ var formAction = function(el, event) { // if declared as a full reload, just normally submit the form if (options.currentUrlFullReload) { - el.setAttribute(attrClick, "reload"); - return; + el.setAttribute(attrClick, "reload") + return } event.preventDefault() - var paramObject = []; + var paramObject = [] for (var elementKey in el.elements) { - var element = el.elements[elementKey]; + var element = el.elements[elementKey] // jscs:disable disallowImplicitTypeConversion if (!!element.name && element.attributes !== undefined && element.tagName.toLowerCase() !== "button") { // jscs:enable disallowImplicitTypeConversion if ((element.attributes.type !== "checkbox" && element.attributes.type !== "radio") || element.checked) { - paramObject.push({name: encodeURIComponent(element.name), value: encodeURIComponent(element.value)}); + paramObject.push({name: encodeURIComponent(element.name), value: encodeURIComponent(element.value)}) } } } // Creating a getString - var paramsString = (paramObject.map(function(value) {return value.name + "=" + value.value;})).join("&"); + var paramsString = (paramObject.map(function(value) {return value.name + "=" + value.value})).join("&") - options.requestOptions.requestPayload = paramObject; - options.requestOptions.requestPayloadString = paramsString; + options.requestOptions.requestPayload = paramObject + options.requestOptions.requestPayloadString = paramsString - el.setAttribute(attrClick, "submit"); + el.setAttribute(attrClick, "submit") - - options.triggerElement = el; - this.loadUrl(virtLinkElement.href, options); -}; + options.triggerElement = el + this.loadUrl(virtLinkElement.href, options) +} var isDefaultPrevented = function(event) { - return event.defaultPrevented || event.returnValue === false; -}; - + return event.defaultPrevented || event.returnValue === false +} module.exports = function(el) { var that = this @@ -92,7 +90,6 @@ module.exports = function(el) { return } - if (event.keyCode === 13) { formAction.call(that, el, event) } diff --git a/lib/proto/attach-link.js b/lib/proto/attach-link.js index b0af05c..398d8ec 100644 --- a/lib/proto/attach-link.js +++ b/lib/proto/attach-link.js @@ -9,10 +9,10 @@ var attrKey = "data-pjax-keyup-state" var linkAction = function(el, event) { // Since loadUrl modifies options and we may add our own modifications below, // clone it so the changes don't persist - var options = clone(this.options); + var options = clone(this.options) // Initialize requestOptions since loadUrl expects it to be an object - options.requestOptions = {}; + options.requestOptions = {} // Don’t break browser special behavior on links (like page in new window) if (event.which > 1 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) { @@ -66,7 +66,7 @@ var linkAction = function(el, event) { } var isDefaultPrevented = function(event) { - return event.defaultPrevented || event.returnValue === false; + return event.defaultPrevented || event.returnValue === false } module.exports = function(el) { diff --git a/lib/proto/log.js b/lib/proto/log.js index a2d8006..4b02175 100644 --- a/lib/proto/log.js +++ b/lib/proto/log.js @@ -1,11 +1,11 @@ module.exports = function() { if (this.options.debug && console) { if (typeof console.log === "function") { - console.log.apply(console, arguments); + console.log.apply(console, arguments) } // ie is weird else if (console.log) { - console.log(arguments); + console.log(arguments) } } } diff --git a/lib/proto/parse-options.js b/lib/proto/parse-options.js index b770d85..b7c1937 100644 --- a/lib/proto/parse-options.js +++ b/lib/proto/parse-options.js @@ -19,7 +19,7 @@ module.exports = function(options) { ga("send", "pageview", {page: location.pathname, title: document.title}) } } - options.scrollTo = (typeof options.scrollTo === "undefined") ? 0 : options.scrollTo; + options.scrollTo = (typeof options.scrollTo === "undefined") ? 0 : options.scrollTo options.scrollRestoration = (typeof options.scrollRestoration !== "undefined") ? options.scrollRestoration : true options.cacheBust = (typeof options.cacheBust === "undefined") ? true : options.cacheBust options.debug = options.debug || false diff --git a/lib/send-request.js b/lib/send-request.js index a474e05..618f65b 100644 --- a/lib/send-request.js +++ b/lib/send-request.js @@ -1,7 +1,7 @@ module.exports = function(location, options, callback) { - options = options || {}; - var requestMethod = options.requestMethod || "GET"; - var requestPayload = options.requestPayloadString || null; + options = options || {} + var requestMethod = options.requestMethod || "GET" + var requestPayload = options.requestPayloadString || null var request = new XMLHttpRequest() request.onreadystatechange = function() { @@ -37,7 +37,7 @@ module.exports = function(location, options, callback) { // Add the request payload if available if (options.requestPayloadString !== undefined && options.requestPayloadString !== "") { // Send the proper header information along with the request - request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); + request.setRequestHeader("Content-type", "application/x-www-form-urlencoded") } request.send(requestPayload) diff --git a/lib/switches-selectors.js b/lib/switches-selectors.js index e55c205..1877883 100644 --- a/lib/switches-selectors.js +++ b/lib/switches-selectors.js @@ -3,7 +3,7 @@ var forEachEls = require("./foreach-els") var defaultSwitches = require("./switches") module.exports = function(switches, switchesOptions, selectors, fromEl, toEl, options) { - var switchesQueue = []; + var switchesQueue = [] selectors.forEach(function(selector) { var newEls = fromEl.querySelectorAll(selector) @@ -12,12 +12,6 @@ module.exports = function(switches, switchesOptions, selectors, fromEl, toEl, op this.log("Pjax switch", selector, newEls, oldEls) } if (newEls.length !== oldEls.length) { - // forEachEls(newEls, function(el) { - // this.log("newEl", el, el.outerHTML) - // }, this) - // forEachEls(oldEls, function(el) { - // this.log("oldEl", el, el.outerHTML) - // }, this) throw "DOM doesn’t look the same on new loaded page: ’" + selector + "’ - new " + newEls.length + ", old " + oldEls.length } diff --git a/lib/switches.js b/lib/switches.js index 51daf6b..737febb 100644 --- a/lib/switches.js +++ b/lib/switches.js @@ -1,7 +1,4 @@ var on = require("./events/on.js") -// var off = require("./lib/events/on.js") -// var trigger = require("./lib/events/trigger.js") - module.exports = { outerHTML: function(oldEl, newEl) { @@ -20,7 +17,7 @@ module.exports = { // Copy attributes from the new element to the old one if (newEl.hasAttributes()) { - var attrs = newEl.attributes; + var attrs = newEl.attributes for (var i = 0; i < attrs.length; i++) { oldEl.attributes.setNamedItem(attrs[i].cloneNode()) } @@ -34,9 +31,6 @@ module.exports = { var elsToRemove = [] var elsToAdd = [] var fragToAppend = document.createDocumentFragment() - // height transition are shitty on safari - // so commented for now (until I found something ?) - // var relevantHeight = 0 var animationEventNames = "animationend webkitAnimationEnd MSAnimationEnd oanimationend" var animatedElsNumber = 0 var sexyAnimationEnd = function(e) { @@ -58,28 +52,16 @@ module.exports = { elsToAdd.forEach(function(el) { el.className = el.className.replace(el.getAttribute("data-pjax-classes"), "") el.removeAttribute("data-pjax-classes") - // Pjax.off(el, animationEventNames, sexyAnimationEnd, true) }) elsToAdd = null // free memory elsToRemove = null // free memory - // assume the height is now useless (avoid bug since there is overflow hidden on the parent) - // oldEl.style.height = "auto" - // this is to trigger some repaint (example: picturefill) this.onSwitch() - // Pjax.trigger(window, "scroll") } }.bind(this) - // Force height to be able to trigger css animation - // here we get the relevant height - // oldEl.parentNode.appendChild(newEl) - // relevantHeight = newEl.getBoundingClientRect().height - // oldEl.parentNode.removeChild(newEl) - // oldEl.style.height = oldEl.getBoundingClientRect().height + "px" - switchOptions = switchOptions || {} forEach.call(oldEl.childNodes, function(el) { @@ -123,7 +105,5 @@ module.exports = { // pass all className of the parent oldEl.className = newEl.className oldEl.appendChild(fragToAppend) - - // oldEl.style.height = relevantHeight + "px" } } diff --git a/tests/lib/events.js b/tests/lib/events.js index 94fda00..e7f44ea 100644 --- a/tests/lib/events.js +++ b/tests/lib/events.js @@ -7,8 +7,7 @@ var trigger = require("../../lib/events/trigger") var el = document.createElement("div") var el2 = document.createElement("span") var els = [el, el2] -// var eventType2 = "resize" -// var eventsType = "click resize" + var classCb = function() { this.className += "on" } @@ -92,14 +91,14 @@ tape("test events on/off/trigger for multiple elements, multiple events", functi }) tape("test events on top level elements", function(t) { - var el = document; + var el = document el.className = "" on(el, "click", classCb) trigger(el, "click") t.equal(el.className, "on", "attached callback has been fired properly on document") - el = window; + el = window el.className = "" // With jsdom, the default this is global, not window, so we need to explicitly bind to window. diff --git a/tests/lib/proto/attach-form.js b/tests/lib/proto/attach-form.js index 86ecdbc..a9923a1 100644 --- a/tests/lib/proto/attach-form.js +++ b/tests/lib/proto/attach-form.js @@ -91,5 +91,5 @@ tape("test options are not modified by attachForm", function(t) { t.equal(1, Object.keys(options).length, "options object that is passed in should not be modified") t.equal("bar", options.foo, "options object that is passed in should not be modified") - t.end(); + t.end() }) diff --git a/tests/lib/proto/attach-link.js b/tests/lib/proto/attach-link.js index 3a5141c..cae020a 100644 --- a/tests/lib/proto/attach-link.js +++ b/tests/lib/proto/attach-link.js @@ -79,7 +79,7 @@ tape("test attach link preventDefaulted events", function(t) { tape("test options are not modified by attachLink", function(t) { var a = document.createElement("a") var options = {foo: "bar"} - var loadUrl = function() {}; + var loadUrl = function() {} attachLink.call({options: options, loadUrl: loadUrl}, a) @@ -90,5 +90,5 @@ tape("test options are not modified by attachLink", function(t) { t.equal(1, Object.keys(options).length, "options object that is passed in should not be modified") t.equal("bar", options.foo, "options object that is passed in should not be modified") - t.end(); + t.end() }) diff --git a/tests/lib/proto/parse-options.js b/tests/lib/proto/parse-options.js index f4914db..c36d96e 100644 --- a/tests/lib/proto/parse-options.js +++ b/tests/lib/proto/parse-options.js @@ -3,46 +3,46 @@ var tape = require("tape") var parseOptions = require("../../../lib/proto/parse-options.js") tape("test parse initalization options function", function(t) { t.test("- default options", function(t) { - var pjax = {}; - parseOptions.call(pjax, {}); + var pjax = {} + parseOptions.call(pjax, {}) - t.equal(pjax.options.elements, "a[href], form[action]"); - t.equal(pjax.options.selectors.length, 2, "selectors length"); - t.equal(pjax.options.selectors[0], "title"); - t.equal(pjax.options.selectors[1], ".js-Pjax"); + t.equal(pjax.options.elements, "a[href], form[action]") + t.equal(pjax.options.selectors.length, 2, "selectors length") + t.equal(pjax.options.selectors[0], "title") + t.equal(pjax.options.selectors[1], ".js-Pjax") - t.equal(typeof pjax.options.switches, "object"); - t.equal(Object.keys(pjax.options.switches).length, 2);// head and body + t.equal(typeof pjax.options.switches, "object") + t.equal(Object.keys(pjax.options.switches).length, 2)// head and body - t.equal(typeof pjax.options.switchesOptions, "object"); - t.equal(Object.keys(pjax.options.switchesOptions).length, 0); + t.equal(typeof pjax.options.switchesOptions, "object") + t.equal(Object.keys(pjax.options.switchesOptions).length, 0) - t.equal(pjax.options.history, true); - t.equal(typeof pjax.options.analytics, "function"); - t.equal(pjax.options.scrollTo, 0); - t.equal(pjax.options.scrollRestoration, true); - t.equal(pjax.options.cacheBust, true); - t.equal(pjax.options.debug, false); - t.end(); - }); + t.equal(pjax.options.history, true) + t.equal(typeof pjax.options.analytics, "function") + t.equal(pjax.options.scrollTo, 0) + t.equal(pjax.options.scrollRestoration, true) + t.equal(pjax.options.cacheBust, true) + t.equal(pjax.options.debug, false) + t.end() + }) // verify analytics always ends up as a function even when passed not a function t.test("- analytics is a function", function(t) { - var pjax = {}; - parseOptions.call(pjax, {analytics: "some string"}); + var pjax = {} + parseOptions.call(pjax, {analytics: "some string"}) - t.deepEqual(typeof pjax.options.analytics, "function"); - t.end(); - }); + t.deepEqual(typeof pjax.options.analytics, "function") + t.end() + }) // verify that the value false for scrollTo is not squashed t.test("- scrollTo remains false", function(t) { - var pjax = {}; - parseOptions.call(pjax, {scrollTo: false}); + var pjax = {} + parseOptions.call(pjax, {scrollTo: false}) - t.deepEqual(pjax.options.scrollTo, false); - t.end(); - }); + t.deepEqual(pjax.options.scrollTo, false) + t.end() + }) t.end() }) diff --git a/tests/lib/send-request.js b/tests/lib/send-request.js index cbc3b36..9ecaf56 100644 --- a/tests/lib/send-request.js +++ b/tests/lib/send-request.js @@ -22,7 +22,7 @@ tape("test xhr request", function(t) { options: { cacheBust: true } - }); + }) var r = requestCacheBust(url, {}, function(result) { t.equal(r.responseURL.indexOf("?"), url.length, "XHR URL is cache-busted when configured to be") try { @@ -40,7 +40,7 @@ tape("test xhr request", function(t) { options: { cacheBust: false } - }); + }) var r = requestNoCacheBust(url, {}, function() { t.equal(r.responseURL, url, "XHR URL is left untouched") t.end()