aboutsummaryrefslogtreecommitdiff
path: root/lib/style-reader.js
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-08-15 10:00:12 +0100
committerMichael Williamson <mike@zwobble.org>2015-08-15 10:00:12 +0100
commit57299a40f7517ac4934ac391b44656500bac024d (patch)
treee7028502e2e2f5450266ca90fc0942898417000a /lib/style-reader.js
parent1507381c0afbd2c2aaefe4fba8970c4a875886e9 (diff)
Generate warnings for not-understood style mappings and continue
Diffstat (limited to 'lib/style-reader.js')
-rw-r--r--lib/style-reader.js20
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) {