#

API Docs for: 3.10.3
Show: Inherited Protected Private Deprecated

# File: collection/js/arraylist-add.js

    /**
     * Collection utilities beyond what is provided in the YUI core
     * @module collection
     * @submodule arraylist-add
     * @deprecated Use ModelList or a custom ArrayList subclass
     */

    /*
     * Adds methods add and remove to Y.ArrayList
     */
    Y.mix(Y.ArrayList.prototype, {

        /**
         * Add a single item to the ArrayList.  Does not prevent duplicates.
         *
         * @method add
         * @param { mixed } item Item presumably of the same type as others in the
         *                       ArrayList.
         * @param {Number} index (Optional.)  Number representing the position at
         * which the item should be inserted.
         * @return {ArrayList} the instance.
         * @for ArrayList
         * @deprecated Use ModelList or a custom ArrayList subclass
         * @chainable
         */
        add: function(item, index) {
            var items = this._items;

            if (Y.Lang.isNumber(index)) {
                items.splice(index, 0, item);
            }
            else {
                items.push(item);
            }

            return this;
        },

        /**
         * Removes first or all occurrences of an item to the ArrayList.  If a
         * comparator is not provided, uses itemsAreEqual method to determine
         * matches.
         *
         * @method remove
         * @param { mixed } needle Item to find and remove from the list.
         * @param { Boolean } all If true, remove all occurrences.
         * @param { Function } comparator optional a/b function to test equivalence.
         * @return {ArrayList} the instance.
         * @for ArrayList
         * @deprecated Use ModelList or a custom ArrayList subclass
         * @chainable
         */
        remove: function(needle, all, comparator) {
            comparator = comparator || this.itemsAreEqual;

            for (var i = this._items.length - 1; i >= 0; --i) {
                if (comparator.call(this, needle, this.item(i))) {
                    this._items.splice(i, 1);
                    if (!all) {
                        break;
                    }
                }
            }

            return this;
        },

        /**
         * Default comparator for items stored in this list.  Used by remove().
         *
         * @method itemsAreEqual
         * @param { mixed } a item to test equivalence with.
         * @param { mixed } b other item to test equivalance.
         * @return { Boolean } true if items are deemed equivalent.
         * @for ArrayList
         * @deprecated Use ModelList or a custom ArrayList subclass
         */
        itemsAreEqual: function(a, b) {
            return a === b;
        }

    });