| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- module.exports = new (function() {
- /**
- * Returns the properties object passed as an argument (or null if no arguments are passed).
- * If the supplied properties argument is a function, it invokes that function with the page as its context.
- *
- * @method createProps
- * @param {Page|Section} parent The page object or section instance
- * @param {Object|Function} props Object or Function that returns an object
- * @returns {null}
- */
- this.createProps = function(parent, props) {
- parent.props = typeof props === 'function' ? props.call(parent) : props;
- return this;
- };
- /**
- * Assigns the `elements` property for a page or section object.
- * For each object in the passed array, it creates a new element object by instantiating Element with its options
- *
- * @param {Page|Section} parent The page object or section instance
- * @param {Object|Array} elements Object or array of objects to become element objects
- * @returns {null}
- */
- this.createElements = function(parent, elements) {
- var Element = require('./element.js');
- var elementObjects = {};
- var el;
- if (!Array.isArray(elements)) {
- elements = [elements];
- }
- elements.forEach(function(els) {
- Object.keys(els).forEach(function(e) {
- el = typeof els[e] === 'string' ? { selector: els[e] } : els[e];
- el.parent = parent;
- el.name = e;
- elementObjects[el.name] = new Element(el);
- });
- });
- parent.elements = elementObjects;
- return this;
- };
- /**
- * Assigns the `section` property for a page or section object.
- * For each object in the passed array, it creates a new section object by instantiating Section with its options
- *
- * @param {Page|Section} parent The page object or section instance
- * @param {Array} sections Array of objects to become section objects
- * @returns {null}
- */
- this.createSections = function(parent, sections) {
- var Section = require('./section.js');
- var sectionObjects = {};
- var sec;
- Object.keys(sections).forEach(function(s) {
- sec = sections[s];
- sec.parent = parent;
- sec.name = s;
- sectionObjects[sec.name] = new Section(sec);
- });
- parent.section = sectionObjects;
- return this;
- };
- /**
- * Mixes in the passed functions to the page or section object.
- *
- * @param {Page|Section} parent The page object or section instance
- * @param {Object} command Array of commands that will be added to the age or section
- * @returns {null}
- */
- this.addCommands = function(parent, commands) {
- commands.forEach(function(m) {
- Object.keys(m).forEach(function(k) {
- parent[k] = m[k];
- });
- });
- return this;
- };
- })();
|