@@ -66,47 +66,58 @@ const interpret = (url, instance, { ast, dynamicAnchors, errors, annotations, ou
66
66
for ( const [ keywordId , schemaUri , keywordValue ] of ast [ url ] ) {
67
67
const context = { ast, dynamicAnchors, errors : [ ] , annotations : [ ] , outputFormat } ;
68
68
const keywordHandler = getKeyword ( keywordId ) ;
69
- if ( ! keywordHandler . interpret ( keywordValue , instance , context ) ) {
69
+ const isKeywordValid = keywordHandler . interpret ( keywordValue , instance , context ) ;
70
+ if ( ! isKeywordValid ) {
70
71
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
+ }
94
73
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 ;
103
114
}
104
-
105
- schemaAnnotations . push ( ... context . annotations ) ;
115
+ default :
116
+ throw Error ( `Unsupported output format ' ${ outputFormat } '` ) ;
106
117
}
107
118
}
108
119
109
- if ( isSchemaValid ) {
120
+ if ( outputFormat === BASIC && isSchemaValid ) {
110
121
annotations . push ( ...schemaAnnotations ) ;
111
122
}
112
123
0 commit comments