123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- /*jshint
- asi: true,
- unused: true,
- boss: true,
- loopfunc: true,
- eqnull: true
- */
- /*!
- * Legacy browser support
- */
- // Map array support
- if ( ![].map ) {
- Array.prototype.map = function ( callback, self ) {
- var array = this, len = array.length, newArray = new Array( len )
- for ( var i = 0; i < len; i++ ) {
- if ( i in array ) {
- newArray[ i ] = callback.call( self, array[ i ], i, array )
- }
- }
- return newArray
- }
- }
- // Filter array support
- if ( ![].filter ) {
- Array.prototype.filter = function( callback ) {
- if ( this == null ) throw new TypeError()
- var t = Object( this ), len = t.length >>> 0
- if ( typeof callback != 'function' ) throw new TypeError()
- var newArray = [], thisp = arguments[ 1 ]
- for ( var i = 0; i < len; i++ ) {
- if ( i in t ) {
- var val = t[ i ]
- if ( callback.call( thisp, val, i, t ) ) newArray.push( val )
- }
- }
- return newArray
- }
- }
- // Index of array support
- if ( ![].indexOf ) {
- Array.prototype.indexOf = function( searchElement ) {
- if ( this == null ) throw new TypeError()
- var t = Object( this ), len = t.length >>> 0
- if ( len === 0 ) return -1
- var n = 0
- if ( arguments.length > 1 ) {
- n = Number( arguments[ 1 ] )
- if ( n != n ) {
- n = 0
- }
- else if ( n !== 0 && n != Infinity && n != -Infinity ) {
- n = ( n > 0 || -1 ) * Math.floor( Math.abs( n ) )
- }
- }
- if ( n >= len ) return -1
- var k = n >= 0 ? n : Math.max( len - Math.abs( n ), 0 )
- for ( ; k < len; k++ ) {
- if ( k in t && t[ k ] === searchElement ) return k
- }
- return -1
- }
- }
- /*!
- * Cross-Browser Split 1.1.1
- * Copyright 2007-2012 Steven Levithan <stevenlevithan.com>
- * Available under the MIT License
- * http://blog.stevenlevithan.com/archives/cross-browser-split
- */
- var nativeSplit = String.prototype.split, compliantExecNpcg = /()??/.exec('')[1] === undefined
- String.prototype.split = function(separator, limit) {
- var str = this
- if (Object.prototype.toString.call(separator) !== '[object RegExp]') {
- return nativeSplit.call(str, separator, limit)
- }
- var output = [],
- flags = (separator.ignoreCase ? 'i' : '') +
- (separator.multiline ? 'm' : '') +
- (separator.extended ? 'x' : '') +
- (separator.sticky ? 'y' : ''),
- lastLastIndex = 0,
- separator2, match, lastIndex, lastLength
- separator = new RegExp(separator.source, flags + 'g')
- str += ''
- if (!compliantExecNpcg) {
- separator2 = new RegExp('^' + separator.source + '$(?!\\s)', flags)
- }
- limit = limit === undefined ? -1 >>> 0 : limit >>> 0
- while (match = separator.exec(str)) {
- lastIndex = match.index + match[0].length
- if (lastIndex > lastLastIndex) {
- output.push(str.slice(lastLastIndex, match.index))
- if (!compliantExecNpcg && match.length > 1) {
- match[0].replace(separator2, function () {
- for (var i = 1; i < arguments.length - 2; i++) {
- if (arguments[i] === undefined) {
- match[i] = undefined
- }
- }
- })
- }
- if (match.length > 1 && match.index < str.length) {
- Array.prototype.push.apply(output, match.slice(1))
- }
- lastLength = match[0].length
- lastLastIndex = lastIndex
- if (output.length >= limit) {
- break
- }
- }
- if (separator.lastIndex === match.index) {
- separator.lastIndex++
- }
- }
- if (lastLastIndex === str.length) {
- if (lastLength || !separator.test('')) {
- output.push('')
- }
- } else {
- output.push(str.slice(lastLastIndex))
- }
- return output.length > limit ? output.slice(0, limit) : output
- };
|