JezK
Edit File: head_details.js
// Generated by CoffeeScript 2.7.0 (function() { Turbolinks.HeadDetails = (function() { var elementIsMetaElementWithName, elementIsScript, elementIsStylesheet, elementIsTracked, elementType; class HeadDetails { static fromHeadElement(headElement) { var ref; return new this((ref = headElement != null ? headElement.childNodes : void 0) != null ? ref : []); } constructor(childNodes) { var base, data, i, key, len, node; this.elements = {}; for (i = 0, len = childNodes.length; i < len; i++) { node = childNodes[i]; if (!(node.nodeType === Node.ELEMENT_NODE)) { continue; } key = node.outerHTML; data = (base = this.elements)[key] != null ? base[key] : base[key] = { type: elementType(node), tracked: elementIsTracked(node), elements: [] }; data.elements.push(node); } } hasElementWithKey(key) { return key in this.elements; } getTrackedElementSignature() { var key, tracked; return ((function() { var ref, results; ref = this.elements; results = []; for (key in ref) { ({tracked} = ref[key]); if (tracked) { results.push(key); } } return results; }).call(this)).join(""); } getScriptElementsNotInDetails(headDetails) { return this.getElementsMatchingTypeNotInDetails("script", headDetails); } getStylesheetElementsNotInDetails(headDetails) { return this.getElementsMatchingTypeNotInDetails("stylesheet", headDetails); } getElementsMatchingTypeNotInDetails(matchedType, headDetails) { var elements, key, ref, results, type; ref = this.elements; results = []; for (key in ref) { ({type, elements} = ref[key]); if (type === matchedType && !headDetails.hasElementWithKey(key)) { results.push(elements[0]); } } return results; } getProvisionalElements() { var elements, key, provisionalElements, ref, tracked, type; provisionalElements = []; ref = this.elements; for (key in ref) { ({type, tracked, elements} = ref[key]); if ((type == null) && !tracked) { provisionalElements.push(...elements); } else if (elements.length > 1) { provisionalElements.push(...elements.slice(1)); } } return provisionalElements; } getMetaValue(name) { var ref; return (ref = this.findMetaElementByName(name)) != null ? ref.getAttribute("content") : void 0; } findMetaElementByName(name) { var element, elements, key, ref; element = void 0; ref = this.elements; for (key in ref) { ({elements} = ref[key]); if (elementIsMetaElementWithName(elements[0], name)) { element = elements[0]; } } return element; } }; elementType = function(element) { if (elementIsScript(element)) { return "script"; } else if (elementIsStylesheet(element)) { return "stylesheet"; } }; elementIsTracked = function(element) { return element.getAttribute("data-turbolinks-track") === "reload"; }; elementIsScript = function(element) { var tagName; tagName = element.tagName.toLowerCase(); return tagName === "script"; }; elementIsStylesheet = function(element) { var tagName; tagName = element.tagName.toLowerCase(); return tagName === "style" || (tagName === "link" && element.getAttribute("rel") === "stylesheet"); }; elementIsMetaElementWithName = function(element, name) { var tagName; tagName = element.tagName.toLowerCase(); return tagName === "meta" && element.getAttribute("name") === name; }; return HeadDetails; }).call(this); }).call(this);