Skip to content

Commit 8f71bef

Browse files
committed
Cleanup output code
1 parent 6aa71be commit 8f71bef

File tree

1 file changed

+46
-35
lines changed

1 file changed

+46
-35
lines changed

lib/keywords/validation.js

Lines changed: 46 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -66,47 +66,58 @@ const interpret = (url, instance, { ast, dynamicAnchors, errors, annotations, ou
6666
for (const [keywordId, schemaUri, keywordValue] of ast[url]) {
6767
const context = { ast, dynamicAnchors, errors: [], annotations: [], outputFormat };
6868
const keywordHandler = getKeyword(keywordId);
69-
if (!keywordHandler.interpret(keywordValue, instance, context)) {
69+
const isKeywordValid = keywordHandler.interpret(keywordValue, instance, context);
70+
if (!isKeywordValid) {
7071
isSchemaValid = false;
71-
if (outputFormat === FLAG) {
72-
continue;
73-
}
74-
75-
const outputUnit = {
76-
keyword: keywordId,
77-
absoluteKeywordLocation: schemaUri,
78-
instanceLocation: Instance.uri(instance)
79-
};
80-
81-
if (outputFormat !== BASIC || !keywordHandler.simpleApplicator) {
82-
errors.push(outputUnit);
83-
}
84-
85-
if (outputFormat === DETAILED && context.errors.length > 0) {
86-
outputUnit.errors = context.errors;
87-
} else if (outputFormat === BASIC) {
88-
errors.push(...context.errors);
89-
}
90-
} else {
91-
if (outputFormat === FLAG) {
92-
continue;
93-
}
72+
}
9473

95-
if (keywordHandler.annotation) {
96-
const outputUnit = {
97-
keyword: keywordId,
98-
absoluteKeywordLocation: schemaUri,
99-
instanceLocation: Instance.uri(instance),
100-
annotation: keywordHandler.annotation(keywordValue)
101-
};
102-
schemaAnnotations.push(outputUnit);
74+
switch (outputFormat) {
75+
case FLAG:
76+
break;
77+
case BASIC:
78+
if (!isKeywordValid) {
79+
if (!keywordHandler.simpleApplicator) {
80+
errors.push({
81+
keyword: keywordId,
82+
absoluteKeywordLocation: schemaUri,
83+
instanceLocation: Instance.uri(instance)
84+
});
85+
}
86+
errors.push(...context.errors);
87+
} else {
88+
if (keywordHandler.annotation) {
89+
const outputUnit = {
90+
keyword: keywordId,
91+
absoluteKeywordLocation: schemaUri,
92+
instanceLocation: Instance.uri(instance),
93+
annotation: keywordHandler.annotation(keywordValue)
94+
};
95+
schemaAnnotations.push(outputUnit);
96+
}
97+
schemaAnnotations.push(...context.annotations);
98+
}
99+
break;
100+
case DETAILED: {
101+
if (!isKeywordValid) {
102+
const outputUnit = {
103+
keyword: keywordId,
104+
absoluteKeywordLocation: schemaUri,
105+
instanceLocation: Instance.uri(instance)
106+
};
107+
108+
errors.push(outputUnit);
109+
if (context.errors.length > 0) {
110+
outputUnit.errors = context.errors;
111+
}
112+
}
113+
break;
103114
}
104-
105-
schemaAnnotations.push(...context.annotations);
115+
default:
116+
throw Error(`Unsupported output format '${outputFormat}'`);
106117
}
107118
}
108119

109-
if (isSchemaValid) {
120+
if (outputFormat === BASIC && isSchemaValid) {
110121
annotations.push(...schemaAnnotations);
111122
}
112123

0 commit comments

Comments
 (0)