New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Globalize jquery enhanced #623
Merged
Merged
Changes from all commits
Commits
Show all changes
11 commits
Select commit
Hold shift + click to select a range
62cd352
Feat (profile-w3c-common.js): Make jquery(-enhanced), Promise, global…
marcoscaceres d4a9831
Fix (js/{core|js|ui}): Use global jquery-enhanced
marcoscaceres 6d17536
Feat (jquery-enhanced.js, utils.js) Make jQuery extras its own module
marcoscaceres 8ab7cd1
Feat (jquery-enhanced-spec.js): Added tests for jquery enhanced
marcoscaceres 3eca755
Fix (ui.js): Requires early binding to jquery
marcoscaceres 65f688f
Fix (tests): Make test behave better when loaded async
marcoscaceres ab567f0
Fix (SpecRunner.html): Allow jQuery to load, before we run the tests.
marcoscaceres 378d644
Fix (test-main.js): improve how tests and dependencies are loaded
marcoscaceres 751e91b
Fix (SpecHelper.js): few additional defaults to conf, makes tests les…
marcoscaceres 6eef6a7
Feat (testFiles.json): Add jquery-enhanced-spec.js to list of tests
marcoscaceres 71e209f
Feat (SpecRunner.html): Make use of fetch + testFiles.json
marcoscaceres File filter
Filter by extension
Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,173 @@ | ||
define(["jquery","core/utils"], function($, utils) { | ||
// --- JQUERY EXTRAS ----------------------------------------------------------------------- | ||
// Applies to any jQuery object containing elements, changes their name to the one give, and | ||
// return a jQuery object containing the new elements | ||
$.fn.renameElement = function(name) { | ||
var arr = []; | ||
this.each(function() { | ||
var $newEl = $(this.ownerDocument.createElement(name)); | ||
// I forget why this didn't work, maybe try again | ||
// $newEl.attr($(this).attr()); | ||
for (var i = 0, n = this.attributes.length; i < n; i++) { | ||
var at = this.attributes[i]; | ||
$newEl[0].setAttributeNS(at.namespaceURI, at.name, at.value); | ||
} | ||
$(this).contents().appendTo($newEl); | ||
$(this).replaceWith($newEl); | ||
arr.push($newEl[0]); | ||
}); | ||
return $(arr); | ||
}; | ||
|
||
// For any element, returns an array of title strings that applies | ||
// the algorithm used for determining the | ||
// actual title of a <dfn> element (but can apply to other as well). | ||
// | ||
// if args.isDefinition is true, then the element is a definition, not a | ||
// reference to a definition. Any @title or @lt will be replaced with | ||
// @data-lt to be consistent with Bikeshed / Shepherd. | ||
// | ||
// This method now *prefers* the data-lt attribute for the list of | ||
// titles. That attribute is added by this method to dfn elements, so | ||
// subsequent calls to this method will return the data-lt based list. | ||
// | ||
// This method will publish a warning if a title is used on a definition | ||
// instead of an @lt (as per specprod mailing list discussion). | ||
$.fn.getDfnTitles = function(args) { | ||
var titles = []; | ||
var theAttr = ""; | ||
var titleString = ""; | ||
var normalizedText = ""; | ||
//data-lt-noDefault avoid using the text content of a definition | ||
//in the definition list. | ||
if (this.attr("data-lt-noDefault") === undefined) { | ||
normalizedText = utils.norm(this.text()).toLowerCase(); | ||
} | ||
// allow @lt to be consistent with bikeshed | ||
if (this.attr("data-lt") || this.attr("lt")) { | ||
theAttr = this.attr("data-lt") ? "data-lt" : "lt"; | ||
// prefer @data-lt for the list of title aliases | ||
titleString = this.attr(theAttr).toLowerCase(); | ||
if (normalizedText !== "") { | ||
//Regex: starts with the "normalizedText|" | ||
var startsWith = new RegExp("^" + normalizedText + "\\|"); | ||
// Use the definition itself as first item, so to avoid | ||
// having to declare the definition twice. | ||
if (!startsWith.test(titleString)) { | ||
titleString = normalizedText + "|" + titleString; | ||
} | ||
} | ||
} else if (this.attr("title")) { | ||
// allow @title for backward compatibility | ||
titleString = this.attr("title"); | ||
theAttr = "title"; | ||
respecEvents.pub("warn", "Using deprecated attribute @title for '" + this.text() + "': see http://w3.org/respec/guide.html#definitions-and-linking"); | ||
} else if (this.contents().length == 1 && this.children("abbr, acronym").length == 1 && this.find(":first-child").attr("title")) { | ||
titleString = this.find(":first-child").attr("title"); | ||
} else { | ||
titleString = this.text(); | ||
} | ||
// now we have a string of one or more titles | ||
titleString = utils.norm(titleString).toLowerCase(); | ||
if (args && args.isDefinition === true) { | ||
// if it came from an attribute, replace that with data-lt as per contract with Shepherd | ||
if (theAttr) { | ||
this.attr("data-lt", titleString); | ||
this.removeAttr(theAttr); | ||
} | ||
// if there is no pre-defined type, assume it is a 'dfn' | ||
if (!this.attr("dfn-type")) { | ||
this.attr("data-dfn-type", "dfn"); | ||
} else { | ||
this.attr("data-dfn-type", this.attr("dfn-type")); | ||
this.removeAttr("dfn-type"); | ||
} | ||
} | ||
titleString.split('|').forEach(function(item) { | ||
if (item != "") { | ||
titles.push(item); | ||
} | ||
}); | ||
return titles; | ||
}; | ||
|
||
// For any element (usually <a>), returns an array of targets that | ||
// element might refer to, of the form | ||
// {for_: 'interfacename', title: 'membername'}. | ||
// | ||
// For an element like: | ||
// <p link-for="Int1"><a for="Int2">Int3.member</a></p> | ||
// we'll return: | ||
// * {for_: "int2", title: "int3.member"} | ||
// * {for_: "int3", title: "member"} | ||
// * {for_: "", title: "int3.member"} | ||
$.fn.linkTargets = function() { | ||
var elem = this; | ||
var link_for = (elem.attr("for") || elem.attr("data-for") || elem.closest("[link-for]").attr("link-for") || elem.closest("[data-link-for]").attr("data-link-for") || "").toLowerCase(); | ||
var titles = elem.getDfnTitles(); | ||
var result = []; | ||
$.each(titles, function() { | ||
result.push({ | ||
for_: link_for, | ||
title: this | ||
}); | ||
var split = this.split('.'); | ||
if (split.length === 2) { | ||
// If there are multiple '.'s, this won't match an | ||
// Interface/member pair anyway. | ||
result.push({ | ||
for_: split[0], | ||
title: split[1] | ||
}); | ||
} | ||
result.push({ | ||
for_: "", | ||
title: this | ||
}); | ||
}); | ||
return result; | ||
}; | ||
|
||
|
||
// Applied to an element, sets an ID for it (and returns it), using a specific prefix | ||
// if provided, and a specific text if given. | ||
$.fn.makeID = function(pfx, txt, noLC) { | ||
if (this.attr("id")) return this.attr("id"); | ||
if (!txt) txt = this.attr("title") ? this.attr("title") : this.text(); | ||
txt = txt.replace(/^\s+/, "").replace(/\s+$/, ""); | ||
var id = noLC ? txt : txt.toLowerCase(); | ||
id = id.split(/[^\-.0-9a-z_]+/i).join("-").replace(/^-+/, "").replace(/-+$/, ""); | ||
if (/\.$/.test(id)) id += "x"; // trailing . doesn't play well with jQuery | ||
if (id.length > 0 && /^[^a-z]/i.test(id)) id = "x" + id; | ||
if (id.length === 0) id = "generatedID"; | ||
if (pfx) id = pfx + "-" + id; | ||
var inc = 1, | ||
doc = this[0].ownerDocument; | ||
if ($("#" + id, doc).length) { | ||
while ($("#" + id + "-" + inc, doc).length) inc++; | ||
id += "-" + inc; | ||
} | ||
this.attr("id", id); | ||
return id; | ||
}; | ||
|
||
// Returns all the descendant text nodes of an element. Note that those nodes aren't | ||
// returned as a jQuery array since I'm not sure if that would make too much sense. | ||
$.fn.allTextNodes = function(exclusions) { | ||
var textNodes = [], | ||
excl = {}; | ||
for (var i = 0, n = exclusions.length; i < n; i++) excl[exclusions[i]] = true; | ||
|
||
function getTextNodes(node) { | ||
if (node.nodeType === 1 && excl[node.localName.toLowerCase()]) return; | ||
if (node.nodeType === 3) textNodes.push(node); | ||
else { | ||
for (var i = 0, len = node.childNodes.length; i < len; ++i) getTextNodes(node.childNodes[i]); | ||
} | ||
} | ||
getTextNodes(this[0]); | ||
return textNodes; | ||
}; | ||
window.$ = $; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @halindrome here be the magic!!!!! 🌟 |
||
return $; | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a straight copy and paste from core/utils (where this code used to live). This code does not require review.