From 47c641f7560d28e0d9eac7ae010566d296d5b628 Mon Sep 17 00:00:00 2001 From: Vojta Jina Date: Thu, 27 Jun 2013 18:59:53 -0700 Subject: [PATCH] fix(preprocessor): do not show duplicate warnings --- lib/preprocessor.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/preprocessor.js b/lib/preprocessor.js index 40430ddfa..b7b1a41b2 100644 --- a/lib/preprocessor.js +++ b/lib/preprocessor.js @@ -11,9 +11,10 @@ var sha1 = function(data) { return hash.digest('hex'); }; - +// TODO(vojta): instantiate preprocessors at the start to show warnings immediately var createPreprocessor = function(config, basePath, injector) { var patterns = Object.keys(config); + var alreadyDisplayedWarnings = Object.create(null); return function(file, done) { var preprocessors = []; @@ -27,16 +28,21 @@ var createPreprocessor = function(config, basePath, injector) { preprocessors.shift()(content, file, nextPreprocessor); }; var instantiatePreprocessor = function(name) { + if (alreadyDisplayedWarnings[name]) { + return; + } + try { preprocessors.push(injector.get('preprocessor:' + name)); } catch (e) { - // TODO(vojta): log warning only once per each preprocessor if (e.message.indexOf('No provider for "preprocessor:' + name + '"') !== -1) { log.warn('Can not load "%s", it is not registered!\n ' + 'Perhaps you are missing some plugin?', name); } else { log.warn('Can not load "%s"!\n ' + e.stack, name); } + + alreadyDisplayedWarnings[name] = true; } };