diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-08-15 10:00:12 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-08-15 10:00:12 +0100 |
| commit | 57299a40f7517ac4934ac391b44656500bac024d (patch) | |
| tree | e7028502e2e2f5450266ca90fc0942898417000a /lib/style-reader.js | |
| parent | 1507381c0afbd2c2aaefe4fba8970c4a875886e9 (diff) | |
Generate warnings for not-understood style mappings and continue
Diffstat (limited to 'lib/style-reader.js')
| -rw-r--r-- | lib/style-reader.js | 20 |
1 files changed, 12 insertions, 8 deletions
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) { |
