| 'use strict'; |
| var _ = require('lodash'); |
| var rx = require('rx-lite-aggregates'); |
| var runAsync = require('run-async'); |
| |
| /** |
| * Resolve a question property value if it is passed as a function. |
| * This method will overwrite the property on the question object with the received value. |
| * @param {Object} question - Question object |
| * @param {String} prop - Property to fetch name |
| * @param {Object} answers - Answers object |
| * @return {rx.Obsersable} - Observable emitting once value is known |
| */ |
| |
| exports.fetchAsyncQuestionProperty = function (question, prop, answers) { |
| if (!_.isFunction(question[prop])) { |
| return rx.Observable.return(question); |
| } |
| |
| return rx.Observable.fromPromise(runAsync(question[prop])(answers) |
| .then(function (value) { |
| question[prop] = value; |
| return question; |
| }) |
| ); |
| }; |