epuber 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +5 -3
- data/README.md +3 -11
- data/bin/epuber +2 -3
- data/epuber.gemspec +3 -6
- data/lib/epuber/book/contributor.rb +1 -1
- data/lib/epuber/book/file_request.rb +1 -1
- data/lib/epuber/book/target.rb +1 -2
- data/lib/epuber/book/toc_item.rb +1 -2
- data/lib/epuber/book.rb +1 -2
- data/lib/epuber/checker/text_checker.rb +1 -1
- data/lib/epuber/checker.rb +1 -2
- data/lib/epuber/checker_transformer_base.rb +1 -0
- data/lib/epuber/command/build.rb +1 -2
- data/lib/epuber/command/compile.rb +1 -1
- data/lib/epuber/command/init.rb +1 -2
- data/lib/epuber/command/server.rb +1 -2
- data/lib/epuber/command.rb +1 -1
- data/lib/epuber/compiler/compilation_context.rb +1 -1
- data/lib/epuber/compiler/file_database.rb +3 -5
- data/lib/epuber/compiler/file_finders/abstract.rb +1 -1
- data/lib/epuber/compiler/file_finders/imaginary.rb +1 -2
- data/lib/epuber/compiler/file_finders/normal.rb +1 -1
- data/lib/epuber/compiler/file_resolver.rb +1 -1
- data/lib/epuber/compiler/file_stat.rb +0 -1
- data/lib/epuber/compiler/file_types/abstract_file.rb +1 -2
- data/lib/epuber/compiler/file_types/bade_file.rb +1 -2
- data/lib/epuber/compiler/file_types/coffee_script_file.rb +1 -2
- data/lib/epuber/compiler/file_types/container_xml_file.rb +1 -2
- data/lib/epuber/compiler/file_types/generated_file.rb +1 -2
- data/lib/epuber/compiler/file_types/ibooks_display_options_file.rb +1 -7
- data/lib/epuber/compiler/file_types/image_file.rb +1 -2
- data/lib/epuber/compiler/file_types/mime_type_file.rb +1 -2
- data/lib/epuber/compiler/file_types/nav_file.rb +1 -2
- data/lib/epuber/compiler/file_types/opf_file.rb +1 -2
- data/lib/epuber/compiler/file_types/source_file.rb +1 -2
- data/lib/epuber/compiler/file_types/static_file.rb +1 -2
- data/lib/epuber/compiler/file_types/stylus_file.rb +1 -2
- data/lib/epuber/compiler/file_types/xhtml_file.rb +2 -4
- data/lib/epuber/compiler/generator.rb +1 -1
- data/lib/epuber/compiler/meta_inf_generator.rb +1 -1
- data/lib/epuber/compiler/nav_generator.rb +1 -1
- data/lib/epuber/compiler/opf_generator.rb +1 -1
- data/lib/epuber/compiler/problem.rb +1 -2
- data/lib/epuber/compiler/xhtml_processor.rb +3 -1
- data/lib/epuber/compiler.rb +7 -11
- data/lib/epuber/config.rb +1 -2
- data/lib/epuber/dsl/attribute.rb +1 -1
- data/lib/epuber/dsl/attribute_support.rb +2 -2
- data/lib/epuber/dsl/object.rb +1 -1
- data/lib/epuber/dsl/tree_object.rb +1 -1
- data/lib/epuber/helper.rb +1 -1
- data/lib/epuber/lockfile.rb +1 -1
- data/lib/epuber/plugin.rb +1 -1
- data/lib/epuber/ruby_extensions/match_data.rb +1 -0
- data/lib/epuber/ruby_extensions/thread.rb +1 -0
- data/lib/epuber/server/handlers.rb +1 -1
- data/lib/epuber/server.rb +2 -2
- data/lib/epuber/templates.rb +2 -1
- data/lib/epuber/third_party/bower/bower.json +3 -3
- data/lib/epuber/third_party/bower/bower_components/cookies-js/bower.json +1 -1
- data/lib/epuber/third_party/bower/bower_components/cookies-js/dist/cookies.js +2 -3
- data/lib/epuber/third_party/bower/bower_components/cookies-js/dist/cookies.min.js +6 -6
- data/lib/epuber/third_party/bower/bower_components/jquery/AUTHORS.txt +278 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/{MIT-LICENSE.txt → LICENSE.txt} +17 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/README.md +65 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/bower.json +2 -16
- data/lib/epuber/third_party/bower/bower_components/jquery/dist/jquery.js +2566 -1962
- data/lib/epuber/third_party/bower/bower_components/jquery/dist/jquery.min.js +4 -5
- data/lib/epuber/third_party/bower/bower_components/jquery/dist/jquery.min.map +1 -1
- data/lib/epuber/third_party/bower/bower_components/jquery/external/sizzle/LICENSE.txt +36 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/{src → external}/sizzle/dist/sizzle.js +236 -160
- data/lib/epuber/third_party/bower/bower_components/jquery/external/sizzle/dist/sizzle.min.js +3 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/external/sizzle/dist/sizzle.min.map +1 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/jsonp.js +25 -14
- data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/load.js +20 -12
- data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/parseJSON.js +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/parseXML.js +4 -5
- data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/script.js +16 -12
- data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/var/location.js +3 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/var/nonce.js +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/var/rquery.js +3 -3
- data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/xhr.js +73 -42
- data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax.js +116 -57
- data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/attr.js +49 -48
- data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/classes.js +86 -67
- data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/prop.js +63 -32
- data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/support.js +6 -5
- data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/val.js +40 -24
- data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes.js +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/callbacks.js +114 -87
- data/lib/epuber/third_party/bower/bower_components/jquery/src/core/access.js +11 -6
- data/lib/epuber/third_party/bower/bower_components/jquery/src/core/init.js +27 -16
- data/lib/epuber/third_party/bower/bower_components/jquery/src/core/parseHTML.js +10 -8
- data/lib/epuber/third_party/bower/bower_components/jquery/src/core/ready.js +20 -14
- data/lib/epuber/third_party/bower/bower_components/jquery/src/core/var/rsingleTag.js +4 -3
- data/lib/epuber/third_party/bower/bower_components/jquery/src/core.js +77 -85
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/addGetHookIf.js +5 -3
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/adjustCSS.js +65 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/curCSS.js +20 -17
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/defaultDisplay.js +16 -14
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/hiddenVisibleSelectors.js +9 -6
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/showHide.js +48 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/support.js +86 -61
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/cssExpand.js +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/getStyles.js +8 -5
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/isHidden.js +6 -3
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/rmargin.js +3 -3
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/rnumnonpx.js +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/{swap.js → var/swap.js} +3 -7
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css.js +107 -55
- data/lib/epuber/third_party/bower/bower_components/jquery/src/data/Data.js +93 -74
- data/lib/epuber/third_party/bower/bower_components/jquery/src/data/{accepts.js → var/acceptData.js} +4 -6
- data/lib/epuber/third_party/bower/bower_components/jquery/src/data/var/{data_user.js → dataPriv.js} +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/data/var/{data_priv.js → dataUser.js} +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/data.js +49 -40
- data/lib/epuber/third_party/bower/bower_components/jquery/src/deferred.js +34 -25
- data/lib/epuber/third_party/bower/bower_components/jquery/src/deprecated.js +27 -8
- data/lib/epuber/third_party/bower/bower_components/jquery/src/dimensions.js +9 -5
- data/lib/epuber/third_party/bower/bower_components/jquery/src/effects/Tween.js +14 -7
- data/lib/epuber/third_party/bower/bower_components/jquery/src/effects/animatedSelector.js +4 -4
- data/lib/epuber/third_party/bower/bower_components/jquery/src/effects.js +96 -115
- data/lib/epuber/third_party/bower/bower_components/jquery/src/event/ajax.js +11 -4
- data/lib/epuber/third_party/bower/bower_components/jquery/src/event/alias.js +11 -23
- data/lib/epuber/third_party/bower/bower_components/jquery/src/event/focusin.js +53 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/event/support.js +3 -3
- data/lib/epuber/third_party/bower/bower_components/jquery/src/event/trigger.js +183 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/event.js +168 -325
- data/lib/epuber/third_party/bower/bower_components/jquery/src/exports/amd.js +3 -3
- data/lib/epuber/third_party/bower/bower_components/jquery/src/exports/global.js +2 -8
- data/lib/epuber/third_party/bower/bower_components/jquery/src/intro.js +1 -1
- data/lib/epuber/third_party/bower/bower_components/jquery/src/jquery.js +5 -5
- data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/_evalUrl.js +6 -4
- data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/buildFragment.js +102 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/getAll.js +21 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/setGlobalEval.js +20 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/support.js +7 -6
- data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/var/rcheckableType.js +3 -3
- data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/var/rscriptType.js +3 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/var/rtagName.js +3 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/wrapMap.js +27 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation.js +206 -305
- data/lib/epuber/third_party/bower/bower_components/jquery/src/offset.js +40 -29
- data/lib/epuber/third_party/bower/bower_components/jquery/src/outro.js +1 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/queue/delay.js +6 -6
- data/lib/epuber/third_party/bower/bower_components/jquery/src/queue.js +23 -22
- data/lib/epuber/third_party/bower/bower_components/jquery/src/selector-native.js +107 -68
- data/lib/epuber/third_party/bower/bower_components/jquery/src/selector-sizzle.js +5 -5
- data/lib/epuber/third_party/bower/bower_components/jquery/src/selector.js +1 -1
- data/lib/epuber/third_party/bower/bower_components/jquery/src/serialize.js +28 -14
- data/lib/epuber/third_party/bower/bower_components/jquery/src/traversing/findFilter.js +13 -13
- data/lib/epuber/third_party/bower/bower_components/jquery/src/traversing/var/dir.js +20 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/traversing/var/rneedsContext.js +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/traversing/var/siblings.js +15 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/traversing.js +32 -56
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/arr.js +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/class2type.js +3 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/concat.js +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/document.js +3 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/documentElement.js +5 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/hasOwn.js +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/indexOf.js +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/pnum.js +3 -3
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/push.js +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/rcssNum.js +7 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/rnotwhite.js +3 -3
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/slice.js +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/support.js +3 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/toString.js +2 -2
- data/lib/epuber/third_party/bower/bower_components/jquery/src/wrap.js +19 -19
- data/lib/epuber/third_party/bower/bower_components/spin.js/{LICENSE.txt → LICENSE.md} +2 -1
- data/lib/epuber/third_party/bower/bower_components/spin.js/README.md +21 -21
- data/lib/epuber/third_party/bower/bower_components/spin.js/bower.json +0 -1
- data/lib/epuber/third_party/bower/bower_components/spin.js/jquery.spin.js +23 -24
- data/lib/epuber/third_party/bower/bower_components/spin.js/spin.js +153 -113
- data/lib/epuber/third_party/bower/bower_components/spin.js/spin.min.js +2 -0
- data/lib/epuber/third_party/bower/bower_components/uri.js/CHANGELOG.md +424 -0
- data/lib/epuber/third_party/bower/bower_components/uri.js/README.md +23 -308
- data/lib/epuber/third_party/bower/bower_components/uri.js/SECURITY.md +12 -0
- data/lib/epuber/third_party/bower/bower_components/uri.js/bower.json +2 -2
- data/lib/epuber/third_party/bower/bower_components/uri.js/contributing.md +0 -4
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/IPv6.js +3 -6
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/SecondLevelDomains.js +8 -4
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/URI.fragmentQuery.js +21 -4
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/URI.fragmentURI.js +1 -1
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/URI.js +312 -69
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/URI.min.js +85 -77
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/URITemplate.js +28 -11
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/jquery.URI.js +17 -18
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/jquery.URI.min.js +6 -6
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/punycode.js +63 -38
- data/lib/epuber/third_party/bower.rb +2 -0
- data/lib/epuber/transformer/text_transformer.rb +1 -2
- data/lib/epuber/transformer.rb +1 -2
- data/lib/epuber/user_interface.rb +1 -1
- data/lib/epuber/vendor/hash_binding.rb +1 -1
- data/lib/epuber/vendor/nokogiri_extensions.rb +24 -21
- data/lib/epuber/vendor/ruby_templater.rb +1 -2
- data/lib/epuber/vendor/size.rb +1 -0
- data/lib/epuber/vendor/version.rb +1 -1
- data/lib/epuber/version.rb +2 -1
- data/lib/epuber.rb +1 -1
- metadata +48 -30
- data/lib/epuber/third_party/bower/bower_components/jquery/src/sizzle/dist/sizzle.min.js +0 -3
- data/lib/epuber/third_party/bower/bower_components/jquery/src/sizzle/dist/sizzle.min.map +0 -1
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/strundefined.js +0 -3
- data/lib/epuber/vendor/globals_context.rb +0 -26
data/lib/epuber/third_party/bower/bower_components/jquery/{src → external}/sizzle/dist/sizzle.js
RENAMED
@@ -1,12 +1,12 @@
|
|
1
1
|
/*!
|
2
|
-
* Sizzle CSS Selector Engine v2.2.
|
2
|
+
* Sizzle CSS Selector Engine v2.2.1
|
3
3
|
* http://sizzlejs.com/
|
4
4
|
*
|
5
|
-
* Copyright
|
5
|
+
* Copyright jQuery Foundation and other contributors
|
6
6
|
* Released under the MIT license
|
7
7
|
* http://jquery.org/license
|
8
8
|
*
|
9
|
-
* Date:
|
9
|
+
* Date: 2015-10-17
|
10
10
|
*/
|
11
11
|
(function( window ) {
|
12
12
|
|
@@ -74,25 +74,21 @@ var i,
|
|
74
74
|
|
75
75
|
// Regular expressions
|
76
76
|
|
77
|
-
//
|
77
|
+
// http://www.w3.org/TR/css3-selectors/#whitespace
|
78
78
|
whitespace = "[\\x20\\t\\r\\n\\f]",
|
79
|
-
// http://www.w3.org/TR/css3-syntax/#characters
|
80
|
-
characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
|
81
79
|
|
82
|
-
//
|
83
|
-
|
84
|
-
// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
|
85
|
-
identifier = characterEncoding.replace( "w", "w#" ),
|
80
|
+
// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
|
81
|
+
identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
|
86
82
|
|
87
83
|
// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
|
88
|
-
attributes = "\\[" + whitespace + "*(" +
|
84
|
+
attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
|
89
85
|
// Operator (capture 2)
|
90
86
|
"*([*^$|!~]?=)" + whitespace +
|
91
87
|
// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
|
92
88
|
"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
|
93
89
|
"*\\]",
|
94
90
|
|
95
|
-
pseudos = ":(" +
|
91
|
+
pseudos = ":(" + identifier + ")(?:\\((" +
|
96
92
|
// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
|
97
93
|
// 1. quoted (capture 3; capture 4 or capture 5)
|
98
94
|
"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
|
@@ -115,9 +111,9 @@ var i,
|
|
115
111
|
ridentifier = new RegExp( "^" + identifier + "$" ),
|
116
112
|
|
117
113
|
matchExpr = {
|
118
|
-
"ID": new RegExp( "^#(" +
|
119
|
-
"CLASS": new RegExp( "^\\.(" +
|
120
|
-
"TAG": new RegExp( "^(" +
|
114
|
+
"ID": new RegExp( "^#(" + identifier + ")" ),
|
115
|
+
"CLASS": new RegExp( "^\\.(" + identifier + ")" ),
|
116
|
+
"TAG": new RegExp( "^(" + identifier + "|[*])" ),
|
121
117
|
"ATTR": new RegExp( "^" + attributes ),
|
122
118
|
"PSEUDO": new RegExp( "^" + pseudos ),
|
123
119
|
"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
|
@@ -195,103 +191,129 @@ try {
|
|
195
191
|
}
|
196
192
|
|
197
193
|
function Sizzle( selector, context, results, seed ) {
|
198
|
-
var
|
199
|
-
|
200
|
-
i, groups, old, nid, newContext, newSelector;
|
194
|
+
var m, i, elem, nid, nidselect, match, groups, newSelector,
|
195
|
+
newContext = context && context.ownerDocument,
|
201
196
|
|
202
|
-
|
203
|
-
|
204
|
-
}
|
197
|
+
// nodeType defaults to 9, since context defaults to document
|
198
|
+
nodeType = context ? context.nodeType : 9;
|
205
199
|
|
206
|
-
context = context || document;
|
207
200
|
results = results || [];
|
208
|
-
nodeType = context.nodeType;
|
209
201
|
|
202
|
+
// Return early from calls with invalid selector or context
|
210
203
|
if ( typeof selector !== "string" || !selector ||
|
211
204
|
nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
|
212
205
|
|
213
206
|
return results;
|
214
207
|
}
|
215
208
|
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
if (
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
209
|
+
// Try to shortcut find operations (as opposed to filters) in HTML documents
|
210
|
+
if ( !seed ) {
|
211
|
+
|
212
|
+
if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
|
213
|
+
setDocument( context );
|
214
|
+
}
|
215
|
+
context = context || document;
|
216
|
+
|
217
|
+
if ( documentIsHTML ) {
|
218
|
+
|
219
|
+
// If the selector is sufficiently simple, try using a "get*By*" DOM method
|
220
|
+
// (excepting DocumentFragment context, where the methods don't exist)
|
221
|
+
if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
|
222
|
+
|
223
|
+
// ID selector
|
224
|
+
if ( (m = match[1]) ) {
|
225
|
+
|
226
|
+
// Document context
|
227
|
+
if ( nodeType === 9 ) {
|
228
|
+
if ( (elem = context.getElementById( m )) ) {
|
229
|
+
|
230
|
+
// Support: IE, Opera, Webkit
|
231
|
+
// TODO: identify versions
|
232
|
+
// getElementById can match elements by name instead of ID
|
233
|
+
if ( elem.id === m ) {
|
234
|
+
results.push( elem );
|
235
|
+
return results;
|
236
|
+
}
|
237
|
+
} else {
|
231
238
|
return results;
|
232
239
|
}
|
240
|
+
|
241
|
+
// Element context
|
233
242
|
} else {
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
243
|
+
|
244
|
+
// Support: IE, Opera, Webkit
|
245
|
+
// TODO: identify versions
|
246
|
+
// getElementById can match elements by name instead of ID
|
247
|
+
if ( newContext && (elem = newContext.getElementById( m )) &&
|
248
|
+
contains( context, elem ) &&
|
249
|
+
elem.id === m ) {
|
250
|
+
|
251
|
+
results.push( elem );
|
252
|
+
return results;
|
253
|
+
}
|
242
254
|
}
|
243
|
-
}
|
244
255
|
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
256
|
+
// Type selector
|
257
|
+
} else if ( match[2] ) {
|
258
|
+
push.apply( results, context.getElementsByTagName( selector ) );
|
259
|
+
return results;
|
249
260
|
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
return results;
|
254
|
-
}
|
255
|
-
}
|
261
|
+
// Class selector
|
262
|
+
} else if ( (m = match[3]) && support.getElementsByClassName &&
|
263
|
+
context.getElementsByClassName ) {
|
256
264
|
|
257
|
-
|
258
|
-
|
259
|
-
nid = old = expando;
|
260
|
-
newContext = context;
|
261
|
-
newSelector = nodeType !== 1 && selector;
|
262
|
-
|
263
|
-
// qSA works strangely on Element-rooted queries
|
264
|
-
// We can work around this by specifying an extra ID on the root
|
265
|
-
// and working up from there (Thanks to Andrew Dupont for the technique)
|
266
|
-
// IE 8 doesn't work on object elements
|
267
|
-
if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
|
268
|
-
groups = tokenize( selector );
|
269
|
-
|
270
|
-
if ( (old = context.getAttribute("id")) ) {
|
271
|
-
nid = old.replace( rescape, "\\$&" );
|
272
|
-
} else {
|
273
|
-
context.setAttribute( "id", nid );
|
265
|
+
push.apply( results, context.getElementsByClassName( m ) );
|
266
|
+
return results;
|
274
267
|
}
|
275
|
-
|
268
|
+
}
|
276
269
|
|
277
|
-
|
278
|
-
|
279
|
-
|
270
|
+
// Take advantage of querySelectorAll
|
271
|
+
if ( support.qsa &&
|
272
|
+
!compilerCache[ selector + " " ] &&
|
273
|
+
(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
|
274
|
+
|
275
|
+
if ( nodeType !== 1 ) {
|
276
|
+
newContext = context;
|
277
|
+
newSelector = selector;
|
278
|
+
|
279
|
+
// qSA looks outside Element context, which is not what we want
|
280
|
+
// Thanks to Andrew Dupont for this workaround technique
|
281
|
+
// Support: IE <=8
|
282
|
+
// Exclude object elements
|
283
|
+
} else if ( context.nodeName.toLowerCase() !== "object" ) {
|
284
|
+
|
285
|
+
// Capture the context ID, setting it first if necessary
|
286
|
+
if ( (nid = context.getAttribute( "id" )) ) {
|
287
|
+
nid = nid.replace( rescape, "\\$&" );
|
288
|
+
} else {
|
289
|
+
context.setAttribute( "id", (nid = expando) );
|
290
|
+
}
|
291
|
+
|
292
|
+
// Prefix every selector in the list
|
293
|
+
groups = tokenize( selector );
|
294
|
+
i = groups.length;
|
295
|
+
nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']";
|
296
|
+
while ( i-- ) {
|
297
|
+
groups[i] = nidselect + " " + toSelector( groups[i] );
|
298
|
+
}
|
299
|
+
newSelector = groups.join( "," );
|
300
|
+
|
301
|
+
// Expand context for sibling selectors
|
302
|
+
newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
|
303
|
+
context;
|
280
304
|
}
|
281
|
-
newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;
|
282
|
-
newSelector = groups.join(",");
|
283
|
-
}
|
284
305
|
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
306
|
+
if ( newSelector ) {
|
307
|
+
try {
|
308
|
+
push.apply( results,
|
309
|
+
newContext.querySelectorAll( newSelector )
|
310
|
+
);
|
311
|
+
return results;
|
312
|
+
} catch ( qsaError ) {
|
313
|
+
} finally {
|
314
|
+
if ( nid === expando ) {
|
315
|
+
context.removeAttribute( "id" );
|
316
|
+
}
|
295
317
|
}
|
296
318
|
}
|
297
319
|
}
|
@@ -304,7 +326,7 @@ function Sizzle( selector, context, results, seed ) {
|
|
304
326
|
|
305
327
|
/**
|
306
328
|
* Create key-value caches of limited size
|
307
|
-
* @returns {
|
329
|
+
* @returns {function(string, object)} Returns the Object data after storing it on itself with
|
308
330
|
* property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
|
309
331
|
* deleting the oldest entry
|
310
332
|
*/
|
@@ -359,7 +381,7 @@ function assert( fn ) {
|
|
359
381
|
*/
|
360
382
|
function addHandle( attrs, handler ) {
|
361
383
|
var arr = attrs.split("|"),
|
362
|
-
i =
|
384
|
+
i = arr.length;
|
363
385
|
|
364
386
|
while ( i-- ) {
|
365
387
|
Expr.attrHandle[ arr[i] ] = handler;
|
@@ -472,33 +494,29 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
472
494
|
var hasCompare, parent,
|
473
495
|
doc = node ? node.ownerDocument || node : preferredDoc;
|
474
496
|
|
475
|
-
//
|
497
|
+
// Return early if doc is invalid or already selected
|
476
498
|
if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
|
477
499
|
return document;
|
478
500
|
}
|
479
501
|
|
480
|
-
//
|
502
|
+
// Update global variables
|
481
503
|
document = doc;
|
482
|
-
docElem =
|
483
|
-
|
484
|
-
|
485
|
-
// Support: IE
|
486
|
-
//
|
487
|
-
|
488
|
-
|
489
|
-
if ( parent && parent !== parent.top ) {
|
490
|
-
// IE11 does not have attachEvent, so all must suffer
|
504
|
+
docElem = document.documentElement;
|
505
|
+
documentIsHTML = !isXML( document );
|
506
|
+
|
507
|
+
// Support: IE 9-11, Edge
|
508
|
+
// Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
|
509
|
+
if ( (parent = document.defaultView) && parent.top !== parent ) {
|
510
|
+
// Support: IE 11
|
491
511
|
if ( parent.addEventListener ) {
|
492
512
|
parent.addEventListener( "unload", unloadHandler, false );
|
513
|
+
|
514
|
+
// Support: IE 9 - 10 only
|
493
515
|
} else if ( parent.attachEvent ) {
|
494
516
|
parent.attachEvent( "onunload", unloadHandler );
|
495
517
|
}
|
496
518
|
}
|
497
519
|
|
498
|
-
/* Support tests
|
499
|
-
---------------------------------------------------------------------- */
|
500
|
-
documentIsHTML = !isXML( doc );
|
501
|
-
|
502
520
|
/* Attributes
|
503
521
|
---------------------------------------------------------------------- */
|
504
522
|
|
@@ -515,12 +533,12 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
515
533
|
|
516
534
|
// Check if getElementsByTagName("*") returns only elements
|
517
535
|
support.getElementsByTagName = assert(function( div ) {
|
518
|
-
div.appendChild(
|
536
|
+
div.appendChild( document.createComment("") );
|
519
537
|
return !div.getElementsByTagName("*").length;
|
520
538
|
});
|
521
539
|
|
522
540
|
// Support: IE<9
|
523
|
-
support.getElementsByClassName = rnative.test(
|
541
|
+
support.getElementsByClassName = rnative.test( document.getElementsByClassName );
|
524
542
|
|
525
543
|
// Support: IE<10
|
526
544
|
// Check if getElementById returns elements by name
|
@@ -528,7 +546,7 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
528
546
|
// so use a roundabout getElementsByName test
|
529
547
|
support.getById = assert(function( div ) {
|
530
548
|
docElem.appendChild( div ).id = expando;
|
531
|
-
return !
|
549
|
+
return !document.getElementsByName || !document.getElementsByName( expando ).length;
|
532
550
|
});
|
533
551
|
|
534
552
|
// ID find and filter
|
@@ -536,9 +554,7 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
536
554
|
Expr.find["ID"] = function( id, context ) {
|
537
555
|
if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
|
538
556
|
var m = context.getElementById( id );
|
539
|
-
|
540
|
-
// nodes that are no longer in the document #6963
|
541
|
-
return m && m.parentNode ? [ m ] : [];
|
557
|
+
return m ? [ m ] : [];
|
542
558
|
}
|
543
559
|
};
|
544
560
|
Expr.filter["ID"] = function( id ) {
|
@@ -555,7 +571,8 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
555
571
|
Expr.filter["ID"] = function( id ) {
|
556
572
|
var attrId = id.replace( runescape, funescape );
|
557
573
|
return function( elem ) {
|
558
|
-
var node = typeof elem.getAttributeNode !== "undefined" &&
|
574
|
+
var node = typeof elem.getAttributeNode !== "undefined" &&
|
575
|
+
elem.getAttributeNode("id");
|
559
576
|
return node && node.value === attrId;
|
560
577
|
};
|
561
578
|
};
|
@@ -595,7 +612,7 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
595
612
|
|
596
613
|
// Class
|
597
614
|
Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
|
598
|
-
if ( documentIsHTML ) {
|
615
|
+
if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
|
599
616
|
return context.getElementsByClassName( className );
|
600
617
|
}
|
601
618
|
};
|
@@ -615,7 +632,7 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
615
632
|
// See http://bugs.jquery.com/ticket/13378
|
616
633
|
rbuggyQSA = [];
|
617
634
|
|
618
|
-
if ( (support.qsa = rnative.test(
|
635
|
+
if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
|
619
636
|
// Build QSA regex
|
620
637
|
// Regex strategy adopted from Diego Perini
|
621
638
|
assert(function( div ) {
|
@@ -625,7 +642,7 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
625
642
|
// since its presence should be enough
|
626
643
|
// http://bugs.jquery.com/ticket/12359
|
627
644
|
docElem.appendChild( div ).innerHTML = "<a id='" + expando + "'></a>" +
|
628
|
-
"<select id='" + expando + "-\
|
645
|
+
"<select id='" + expando + "-\r\\' msallowcapture=''>" +
|
629
646
|
"<option selected=''></option></select>";
|
630
647
|
|
631
648
|
// Support: IE8, Opera 11-12.16
|
@@ -642,7 +659,7 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
642
659
|
rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
|
643
660
|
}
|
644
661
|
|
645
|
-
// Support: Chrome<29, Android<4.
|
662
|
+
// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
|
646
663
|
if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
|
647
664
|
rbuggyQSA.push("~=");
|
648
665
|
}
|
@@ -665,7 +682,7 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
665
682
|
assert(function( div ) {
|
666
683
|
// Support: Windows 8 Native Apps
|
667
684
|
// The type and name attributes are restricted during .innerHTML assignment
|
668
|
-
var input =
|
685
|
+
var input = document.createElement("input");
|
669
686
|
input.setAttribute( "type", "hidden" );
|
670
687
|
div.appendChild( input ).setAttribute( "name", "D" );
|
671
688
|
|
@@ -713,7 +730,7 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
713
730
|
hasCompare = rnative.test( docElem.compareDocumentPosition );
|
714
731
|
|
715
732
|
// Element contains another
|
716
|
-
// Purposefully
|
733
|
+
// Purposefully self-exclusive
|
717
734
|
// As in, an element does not contain itself
|
718
735
|
contains = hasCompare || rnative.test( docElem.contains ) ?
|
719
736
|
function( a, b ) {
|
@@ -767,10 +784,10 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
767
784
|
(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
|
768
785
|
|
769
786
|
// Choose the first element that is related to our preferred document
|
770
|
-
if ( a ===
|
787
|
+
if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
|
771
788
|
return -1;
|
772
789
|
}
|
773
|
-
if ( b ===
|
790
|
+
if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
|
774
791
|
return 1;
|
775
792
|
}
|
776
793
|
|
@@ -798,8 +815,8 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
798
815
|
|
799
816
|
// Parentless nodes are either documents or disconnected
|
800
817
|
if ( !aup || !bup ) {
|
801
|
-
return a ===
|
802
|
-
b ===
|
818
|
+
return a === document ? -1 :
|
819
|
+
b === document ? 1 :
|
803
820
|
aup ? -1 :
|
804
821
|
bup ? 1 :
|
805
822
|
sortInput ?
|
@@ -836,7 +853,7 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
836
853
|
0;
|
837
854
|
};
|
838
855
|
|
839
|
-
return
|
856
|
+
return document;
|
840
857
|
};
|
841
858
|
|
842
859
|
Sizzle.matches = function( expr, elements ) {
|
@@ -853,6 +870,7 @@ Sizzle.matchesSelector = function( elem, expr ) {
|
|
853
870
|
expr = expr.replace( rattributeQuotes, "='$1']" );
|
854
871
|
|
855
872
|
if ( support.matchesSelector && documentIsHTML &&
|
873
|
+
!compilerCache[ expr + " " ] &&
|
856
874
|
( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
|
857
875
|
( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
|
858
876
|
|
@@ -1126,11 +1144,12 @@ Expr = Sizzle.selectors = {
|
|
1126
1144
|
} :
|
1127
1145
|
|
1128
1146
|
function( elem, context, xml ) {
|
1129
|
-
var cache, outerCache, node,
|
1147
|
+
var cache, uniqueCache, outerCache, node, nodeIndex, start,
|
1130
1148
|
dir = simple !== forward ? "nextSibling" : "previousSibling",
|
1131
1149
|
parent = elem.parentNode,
|
1132
1150
|
name = ofType && elem.nodeName.toLowerCase(),
|
1133
|
-
useCache = !xml && !ofType
|
1151
|
+
useCache = !xml && !ofType,
|
1152
|
+
diff = false;
|
1134
1153
|
|
1135
1154
|
if ( parent ) {
|
1136
1155
|
|
@@ -1139,7 +1158,10 @@ Expr = Sizzle.selectors = {
|
|
1139
1158
|
while ( dir ) {
|
1140
1159
|
node = elem;
|
1141
1160
|
while ( (node = node[ dir ]) ) {
|
1142
|
-
if ( ofType ?
|
1161
|
+
if ( ofType ?
|
1162
|
+
node.nodeName.toLowerCase() === name :
|
1163
|
+
node.nodeType === 1 ) {
|
1164
|
+
|
1143
1165
|
return false;
|
1144
1166
|
}
|
1145
1167
|
}
|
@@ -1153,11 +1175,21 @@ Expr = Sizzle.selectors = {
|
|
1153
1175
|
|
1154
1176
|
// non-xml :nth-child(...) stores cache data on `parent`
|
1155
1177
|
if ( forward && useCache ) {
|
1178
|
+
|
1156
1179
|
// Seek `elem` from a previously-cached index
|
1157
|
-
|
1158
|
-
|
1159
|
-
|
1160
|
-
|
1180
|
+
|
1181
|
+
// ...in a gzip-friendly way
|
1182
|
+
node = parent;
|
1183
|
+
outerCache = node[ expando ] || (node[ expando ] = {});
|
1184
|
+
|
1185
|
+
// Support: IE <9 only
|
1186
|
+
// Defend against cloned attroperties (jQuery gh-1709)
|
1187
|
+
uniqueCache = outerCache[ node.uniqueID ] ||
|
1188
|
+
(outerCache[ node.uniqueID ] = {});
|
1189
|
+
|
1190
|
+
cache = uniqueCache[ type ] || [];
|
1191
|
+
nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
|
1192
|
+
diff = nodeIndex && cache[ 2 ];
|
1161
1193
|
node = nodeIndex && parent.childNodes[ nodeIndex ];
|
1162
1194
|
|
1163
1195
|
while ( (node = ++nodeIndex && node && node[ dir ] ||
|
@@ -1167,29 +1199,55 @@ Expr = Sizzle.selectors = {
|
|
1167
1199
|
|
1168
1200
|
// When found, cache indexes on `parent` and break
|
1169
1201
|
if ( node.nodeType === 1 && ++diff && node === elem ) {
|
1170
|
-
|
1202
|
+
uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
|
1171
1203
|
break;
|
1172
1204
|
}
|
1173
1205
|
}
|
1174
1206
|
|
1175
|
-
// Use previously-cached element index if available
|
1176
|
-
} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
|
1177
|
-
diff = cache[1];
|
1178
|
-
|
1179
|
-
// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
|
1180
1207
|
} else {
|
1181
|
-
// Use
|
1182
|
-
|
1183
|
-
|
1208
|
+
// Use previously-cached element index if available
|
1209
|
+
if ( useCache ) {
|
1210
|
+
// ...in a gzip-friendly way
|
1211
|
+
node = elem;
|
1212
|
+
outerCache = node[ expando ] || (node[ expando ] = {});
|
1184
1213
|
|
1185
|
-
|
1186
|
-
|
1187
|
-
|
1188
|
-
|
1189
|
-
}
|
1214
|
+
// Support: IE <9 only
|
1215
|
+
// Defend against cloned attroperties (jQuery gh-1709)
|
1216
|
+
uniqueCache = outerCache[ node.uniqueID ] ||
|
1217
|
+
(outerCache[ node.uniqueID ] = {});
|
1190
1218
|
|
1191
|
-
|
1192
|
-
|
1219
|
+
cache = uniqueCache[ type ] || [];
|
1220
|
+
nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
|
1221
|
+
diff = nodeIndex;
|
1222
|
+
}
|
1223
|
+
|
1224
|
+
// xml :nth-child(...)
|
1225
|
+
// or :nth-last-child(...) or :nth(-last)?-of-type(...)
|
1226
|
+
if ( diff === false ) {
|
1227
|
+
// Use the same loop as above to seek `elem` from the start
|
1228
|
+
while ( (node = ++nodeIndex && node && node[ dir ] ||
|
1229
|
+
(diff = nodeIndex = 0) || start.pop()) ) {
|
1230
|
+
|
1231
|
+
if ( ( ofType ?
|
1232
|
+
node.nodeName.toLowerCase() === name :
|
1233
|
+
node.nodeType === 1 ) &&
|
1234
|
+
++diff ) {
|
1235
|
+
|
1236
|
+
// Cache the index of each encountered element
|
1237
|
+
if ( useCache ) {
|
1238
|
+
outerCache = node[ expando ] || (node[ expando ] = {});
|
1239
|
+
|
1240
|
+
// Support: IE <9 only
|
1241
|
+
// Defend against cloned attroperties (jQuery gh-1709)
|
1242
|
+
uniqueCache = outerCache[ node.uniqueID ] ||
|
1243
|
+
(outerCache[ node.uniqueID ] = {});
|
1244
|
+
|
1245
|
+
uniqueCache[ type ] = [ dirruns, diff ];
|
1246
|
+
}
|
1247
|
+
|
1248
|
+
if ( node === elem ) {
|
1249
|
+
break;
|
1250
|
+
}
|
1193
1251
|
}
|
1194
1252
|
}
|
1195
1253
|
}
|
@@ -1551,10 +1609,10 @@ function addCombinator( matcher, combinator, base ) {
|
|
1551
1609
|
|
1552
1610
|
// Check against all ancestor/preceding elements
|
1553
1611
|
function( elem, context, xml ) {
|
1554
|
-
var oldCache, outerCache,
|
1612
|
+
var oldCache, uniqueCache, outerCache,
|
1555
1613
|
newCache = [ dirruns, doneName ];
|
1556
1614
|
|
1557
|
-
// We can't set arbitrary data on XML nodes, so they don't benefit from
|
1615
|
+
// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
|
1558
1616
|
if ( xml ) {
|
1559
1617
|
while ( (elem = elem[ dir ]) ) {
|
1560
1618
|
if ( elem.nodeType === 1 || checkNonElements ) {
|
@@ -1567,14 +1625,19 @@ function addCombinator( matcher, combinator, base ) {
|
|
1567
1625
|
while ( (elem = elem[ dir ]) ) {
|
1568
1626
|
if ( elem.nodeType === 1 || checkNonElements ) {
|
1569
1627
|
outerCache = elem[ expando ] || (elem[ expando ] = {});
|
1570
|
-
|
1628
|
+
|
1629
|
+
// Support: IE <9 only
|
1630
|
+
// Defend against cloned attroperties (jQuery gh-1709)
|
1631
|
+
uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
|
1632
|
+
|
1633
|
+
if ( (oldCache = uniqueCache[ dir ]) &&
|
1571
1634
|
oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
|
1572
1635
|
|
1573
1636
|
// Assign to newCache so results back-propagate to previous elements
|
1574
1637
|
return (newCache[ 2 ] = oldCache[ 2 ]);
|
1575
1638
|
} else {
|
1576
1639
|
// Reuse newcache so results back-propagate to previous elements
|
1577
|
-
|
1640
|
+
uniqueCache[ dir ] = newCache;
|
1578
1641
|
|
1579
1642
|
// A match means we're done; a fail means we have to keep checking
|
1580
1643
|
if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
|
@@ -1799,18 +1862,21 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
|
|
1799
1862
|
len = elems.length;
|
1800
1863
|
|
1801
1864
|
if ( outermost ) {
|
1802
|
-
outermostContext = context
|
1865
|
+
outermostContext = context === document || context || outermost;
|
1803
1866
|
}
|
1804
1867
|
|
1805
1868
|
// Add elements passing elementMatchers directly to results
|
1806
|
-
// Keep `i` a string if there are no elements so `matchedCount` will be "00" below
|
1807
1869
|
// Support: IE<9, Safari
|
1808
1870
|
// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
|
1809
1871
|
for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
|
1810
1872
|
if ( byElement && elem ) {
|
1811
1873
|
j = 0;
|
1874
|
+
if ( !context && elem.ownerDocument !== document ) {
|
1875
|
+
setDocument( elem );
|
1876
|
+
xml = !documentIsHTML;
|
1877
|
+
}
|
1812
1878
|
while ( (matcher = elementMatchers[j++]) ) {
|
1813
|
-
if ( matcher( elem, context, xml
|
1879
|
+
if ( matcher( elem, context || document, xml) ) {
|
1814
1880
|
results.push( elem );
|
1815
1881
|
break;
|
1816
1882
|
}
|
@@ -1834,8 +1900,17 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
|
|
1834
1900
|
}
|
1835
1901
|
}
|
1836
1902
|
|
1837
|
-
//
|
1903
|
+
// `i` is now the count of elements visited above, and adding it to `matchedCount`
|
1904
|
+
// makes the latter nonnegative.
|
1838
1905
|
matchedCount += i;
|
1906
|
+
|
1907
|
+
// Apply set filters to unmatched elements
|
1908
|
+
// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
|
1909
|
+
// equals `i`), unless we didn't visit _any_ elements in the above loop because we have
|
1910
|
+
// no element matchers and no seed.
|
1911
|
+
// Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
|
1912
|
+
// case, which will result in a "00" `matchedCount` that differs from `i` but is also
|
1913
|
+
// numerically zero.
|
1839
1914
|
if ( bySet && i !== matchedCount ) {
|
1840
1915
|
j = 0;
|
1841
1916
|
while ( (matcher = setMatchers[j++]) ) {
|
@@ -1927,10 +2002,11 @@ select = Sizzle.select = function( selector, context, results, seed ) {
|
|
1927
2002
|
|
1928
2003
|
results = results || [];
|
1929
2004
|
|
1930
|
-
// Try to minimize operations if there is
|
2005
|
+
// Try to minimize operations if there is only one selector in the list and no seed
|
2006
|
+
// (the latter of which guarantees us context)
|
1931
2007
|
if ( match.length === 1 ) {
|
1932
2008
|
|
1933
|
-
//
|
2009
|
+
// Reduce context if the leading compound selector is an ID
|
1934
2010
|
tokens = match[0] = match[0].slice( 0 );
|
1935
2011
|
if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
|
1936
2012
|
support.getById && context.nodeType === 9 && documentIsHTML &&
|
@@ -1985,7 +2061,7 @@ select = Sizzle.select = function( selector, context, results, seed ) {
|
|
1985
2061
|
context,
|
1986
2062
|
!documentIsHTML,
|
1987
2063
|
results,
|
1988
|
-
rsibling.test( selector ) && testContext( context.parentNode ) || context
|
2064
|
+
!context || rsibling.test( selector ) && testContext( context.parentNode ) || context
|
1989
2065
|
);
|
1990
2066
|
return results;
|
1991
2067
|
};
|