From 02ebf0f54ae9cc45daee49e444407bf90f07e781 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Mon, 6 May 2013 19:31:22 +0100 Subject: Extract code for combining messages from different results --- lib/results.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/results.js b/lib/results.js index c12d194..55efd25 100644 --- a/lib/results.js +++ b/lib/results.js @@ -15,15 +15,15 @@ Result.prototype.map = function(func) { }; Result.prototype.flatMapThen = function(func) { - var messages = this.messages; + var that = this; return func(this.value).then(function(otherResult) { - return new Result(otherResult.value, messages.concat(otherResult.messages)); + return new Result(otherResult.value, combineMessages([that, otherResult])); }); }; Result.combine = function(results) { var values = _.flatten(_.pluck(results, "value")); - var messages = _.flatten(_.pluck(results, "messages"), true); + var messages = combineMessages(results); return new Result(values, messages); }; @@ -33,3 +33,7 @@ function warning(message) { message: message }; } + +function combineMessages(results) { + return _.flatten(_.pluck(results, "messages"), true); +} -- cgit v1.2.3