From 64cbd78cc75f933871f1d8e1203f77de01b95096 Mon Sep 17 00:00:00 2001 From: Sven Slootweg Date: Sun, 17 Apr 2016 19:07:24 +0200 Subject: [PATCH] Make value evaluation opt-in --- src/index.js | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/index.js b/src/index.js index 979df52..4b986f7 100644 --- a/src/index.js +++ b/src/index.js @@ -10,24 +10,32 @@ function evaluateValue(value) { } } -function defaultValue(value, fallbackValue) { - value = evaluateValue(value); +function maybeEvaluateValue(value, evaluate) { + if (evaluate === true) { + return evaluateValue(value); + } else { + return value; + } +} + +function defaultValue(value, fallbackValue, options = {}) { + value = maybeEvaluateValue(value, options.evaluate); if (value != null) { return value; } else { - return evaluateValue(fallbackValue); + return maybeEvaluateValue(fallbackValue, options.evaluate); } } -defaultValue.async = function defaultAsyncValue(value, fallbackValue) { +defaultValue.async = function defaultAsyncValue(value, fallbackValue, options = {}) { return promiseTry(() => { - return evaluateValue(value); + return maybeEvaluateValue(value, options.evaluate); }).then((resultValue) => { if (resultValue != null) { return resultValue; } else { - return evaluateValue(fallbackValue); + return maybeEvaluateValue(fallbackValue, options.evaluate); } }) }