/** * Holds a plain key-value javascript object and monitorizes changes over it. */ module.exports = new Class ({ Properties: { /** * The internal object with the params, this is the lot internal object * and should be used for read-only purposes. */ params: { type: Object } /** * Shortcut for params property. */ ,$: { type: Object } } /** * Gets a value from the lot. * * @param {string} field The field name * @return {*} The field value */ ,get: function (field) { return this.params[field]; } /** * Sets a value on the lot. * * @param {string} field The field name * @param {*} value The new field value */ ,set: function (field, value) { var params = {}; params[field] = value; this.assign (params); } /** * Returns an array with the lot keys. * * @return {Array} The lot keys */ ,keys: function () {} /** * Emits the 'change' signal on the lot. * * @param {Object} changes The changed params and its values */ ,changed: function (changes) { this.emit ('change', changes); } /** * Copies all values from another lot. * * @param {Object} object The source object */ ,assign: function () {} /** * Copies all values from another lot. * * @param {LotIface} lot The source lot */ ,assignLot: function (lot) { this.assign (lot.params); } /** * Resets all values. */ ,reset: function () { this.params = {}; } });