From 57299a40f7517ac4934ac391b44656500bac024d Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 15 Aug 2015 10:00:12 +0100 Subject: Generate warnings for not-understood style mappings and continue --- lib/style-reader.js | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'lib/style-reader.js') diff --git a/lib/style-reader.js b/lib/style-reader.js index 6a86eab..6d36c42 100644 --- a/lib/style-reader.js +++ b/lib/style-reader.js @@ -4,6 +4,7 @@ var RegexTokeniser = lop.RegexTokeniser; var documentMatchers = require("./document-matchers"); var htmlPaths = require("./html-paths"); +var results = require("../lib/results"); exports.readHtmlPath = readHtmlPath; exports.readDocumentMatcher = readDocumentMatcher; @@ -195,18 +196,21 @@ function parseString(rule, string) { var tokens = tokenise(string); var parser = lop.Parser(); var parseResult = parser.parseTokens(rule, tokens); - if (!parseResult.isSuccess()) { - throw new Error("Failed to parse: " + describeFailure(parseResult)); + if (parseResult.isSuccess()) { + return results.success(parseResult.value()); + } else { + return new results.Result(null, [results.warning(describeFailure(string, parseResult))]); } - return parseResult.value(); } -function describeFailure(parseResult) { - return parseResult.errors().map(describeError).join("\n"); +function describeFailure(input, parseResult) { + return "Did not understand this style mapping, so ignored it: " + input + "\n" + + parseResult.errors().map(describeError).join("\n"); +} - function describeError(error) { - return error.describe(); - } +function describeError(error) { + return "Error was at character number " + error.characterNumber() + ": " + + "Expected " + error.expected + " but got " + error.actual; } function tokenise(string) { -- cgit v1.2.3