Initial OpenECOMP policy/engine commit
[policy/engine.git] / ecomp-sdk-app / src / main / webapp / app / policyApp / libs / bower_components / jquery / src / traversing / findFilter.js
1 define([
2         "../core",
3         "../var/indexOf",
4         "./var/rneedsContext",
5         "../selector"
6 ], function( jQuery, indexOf, rneedsContext ) {
7
8 var risSimple = /^.[^:#\[\.,]*$/;
9
10 // Implement the identical functionality for filter and not
11 function winnow( elements, qualifier, not ) {
12         if ( jQuery.isFunction( qualifier ) ) {
13                 return jQuery.grep( elements, function( elem, i ) {
14                         /* jshint -W018 */
15                         return !!qualifier.call( elem, i, elem ) !== not;
16                 });
17
18         }
19
20         if ( qualifier.nodeType ) {
21                 return jQuery.grep( elements, function( elem ) {
22                         return ( elem === qualifier ) !== not;
23                 });
24
25         }
26
27         if ( typeof qualifier === "string" ) {
28                 if ( risSimple.test( qualifier ) ) {
29                         return jQuery.filter( qualifier, elements, not );
30                 }
31
32                 qualifier = jQuery.filter( qualifier, elements );
33         }
34
35         return jQuery.grep( elements, function( elem ) {
36                 return ( indexOf.call( qualifier, elem ) >= 0 ) !== not;
37         });
38 }
39
40 jQuery.filter = function( expr, elems, not ) {
41         var elem = elems[ 0 ];
42
43         if ( not ) {
44                 expr = ":not(" + expr + ")";
45         }
46
47         return elems.length === 1 && elem.nodeType === 1 ?
48                 jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
49                 jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
50                         return elem.nodeType === 1;
51                 }));
52 };
53
54 jQuery.fn.extend({
55         find: function( selector ) {
56                 var i,
57                         len = this.length,
58                         ret = [],
59                         self = this;
60
61                 if ( typeof selector !== "string" ) {
62                         return this.pushStack( jQuery( selector ).filter(function() {
63                                 for ( i = 0; i < len; i++ ) {
64                                         if ( jQuery.contains( self[ i ], this ) ) {
65                                                 return true;
66                                         }
67                                 }
68                         }) );
69                 }
70
71                 for ( i = 0; i < len; i++ ) {
72                         jQuery.find( selector, self[ i ], ret );
73                 }
74
75                 // Needed because $( selector, context ) becomes $( context ).find( selector )
76                 ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
77                 ret.selector = this.selector ? this.selector + " " + selector : selector;
78                 return ret;
79         },
80         filter: function( selector ) {
81                 return this.pushStack( winnow(this, selector || [], false) );
82         },
83         not: function( selector ) {
84                 return this.pushStack( winnow(this, selector || [], true) );
85         },
86         is: function( selector ) {
87                 return !!winnow(
88                         this,
89
90                         // If this is a positional/relative selector, check membership in the returned set
91                         // so $("p:first").is("p:last") won't return true for a doc with two "p".
92                         typeof selector === "string" && rneedsContext.test( selector ) ?
93                                 jQuery( selector ) :
94                                 selector || [],
95                         false
96                 ).length;
97         }
98 });
99
100 });