Source: br-presenter/src/br/presenter/node/Nodes.js

'use strict';

var Properties = require('br/presenter/property/Properties');

/**
 * @module br/presenter/node/Nodes
 */

/**
 * Constructs a new <code>Nodes</code> instance containing the given list
 * of {@link module:br/presenter/node/PresentationNode} objects.
 * 
 * @class
 * @alias module:br/presenter/node/Nodes
 * 
 * @classdesc
 * A class used to hold collections of nodes, and providing utility methods for
 * performing operations over those collections.
 * 
 * @param {Array} pNodes (optional) The set of nodes.
 */
function Nodes(pNodes) {
	/** @private */
	this.m_pNodes = pNodes || [];
}

/**
 * Returns the underlying array this collection is built from.
 * @type Array
 */
Nodes.prototype.getNodesArray = function() {
	return this.m_pNodes;
};

/**
 * Returns all properties for the nodes within this collection.
 * @type br.presenter.property.Properties
 */
Nodes.prototype.properties = function() {
	var oProperties = new Properties();

	for (var i = 0, l = this.m_pNodes.length; i < l; ++i) {
		var oPresentationNode = this.m_pNodes[i];

		oProperties.add(oPresentationNode.properties());
	}

	return oProperties;
};

module.exports = Nodes;