15
15
*/
16
16
import * as tsvparser from 'uw-tsv-parser' ;
17
17
18
+ // legacy note format
18
19
const onOpenValidationTn9 = ( content , url ) => {
20
+ console . log ( "... on open matched a legacy note format." )
19
21
const tsvHeader = "Book\tChapter\tVerse\tID\tSupportReference\tOrigQuote\tOccurrence\tGLQuote\tOccurrenceNote" ;
20
22
const numColumns = 9 ;
21
23
const idcolumn = 3 ; //zero based
22
24
return onOpenValidationTsvGeneric ( content , url , tsvHeader , numColumns , idcolumn ) ;
23
25
}
26
+
27
+ // Note TSV formats
24
28
const onOpenValidationTn7 = ( content , url ) => {
29
+ console . log ( "... on open matched a Note format." )
25
30
const tsvHeader = "Reference\tID\tTags\tSupportReference\tQuote\tOccurrence\tNote" ;
26
31
const numColumns = 7 ;
27
32
const idcolumn = 1 ; //zero based
28
33
return onOpenValidationTsvGeneric ( content , url , tsvHeader , numColumns , idcolumn ) ;
29
34
}
35
+ const onOpenValidationSn = ( content , url ) => {
36
+ // same as 7 col TN
37
+ return onOpenValidationTn7 ( content , url ) ;
38
+ }
39
+ const onOpenValidationObsSn = ( content , url ) => {
40
+ // same as 7 col TN
41
+ return onOpenValidationTn7 ( content , url ) ;
42
+ }
43
+ const onOpenValidationObsTn = ( content , url ) => {
44
+ // same as 7 col TN
45
+ return onOpenValidationTn7 ( content , url ) ;
46
+ }
47
+
48
+ // Word list formats
30
49
const onOpenValidationTwl = ( content , url ) => {
50
+ console . log ( "... on open matched a TWL format." )
31
51
const tsvHeader = "Reference\tID\tTags\tOrigWords\tOccurrence\tTWLink" ;
32
52
const numColumns = 6 ;
33
53
const idcolumn = 1 ; //zero based
34
54
return onOpenValidationTsvGeneric ( content , url , tsvHeader , numColumns , idcolumn ) ;
35
55
}
56
+
57
+ // Questions formats
58
+ const onOpenValidationTq = ( content , url ) => {
59
+ console . log ( "... on open matched a Question format." )
60
+ const tsvHeader = "Reference\tID\tTags\tQuote\tOccurrence\tQuestion\tResponse" ;
61
+ const numColumns = 7 ;
62
+ const idcolumn = 1 ; //zero based
63
+ return onOpenValidationTsvGeneric ( content , url , tsvHeader , numColumns , idcolumn ) ;
64
+ }
65
+ const onOpenValidationSq = ( content , url ) => {
66
+ // same as tQ
67
+ return onOpenValidationTq ( content , url ) ;
68
+ }
69
+ const onOpenValidationObsTq = ( content , url ) => {
70
+ // same as tQ
71
+ return onOpenValidationTq ( content , url ) ;
72
+ }
73
+ const onOpenValidationObsSq = ( content , url ) => {
74
+ // same as tQ
75
+ return onOpenValidationTq ( content , url ) ;
76
+ }
77
+
78
+ /*
79
+ Actual checking happens here after the above compute the extra info needed
80
+ */
36
81
const onOpenValidationTsvGeneric = ( content , link , tsvHeader , numColumns , idcolumn ) => {
37
82
const { data, header } = tsvparser . tsvStringToTable ( content ) ;
38
83
let idarray = [ ] ;
39
84
let idarrayline = [ ] ;
40
85
let criticalNotices = [ ] ;
41
86
const incomingTsvHeader = header . join ( '\t' ) ;
42
-
43
87
// is the content correct?
44
88
if ( tsvHeader !== incomingTsvHeader ) {
45
89
criticalNotices . push ( [
@@ -55,7 +99,6 @@ const onOpenValidationTsvGeneric = (content, link, tsvHeader, numColumns, idcolu
55
99
let firstdiff = - 1 ;
56
100
let maxlength = Math . max ( tsvHeader . length , incomingTsvHeader . length ) ;
57
101
for ( let i = 0 ; i < maxlength ; i ++ ) {
58
- //console.log("s vs t:", tsvHeader[i], rows[0][i]);
59
102
if ( tsvHeader . charCodeAt ( i ) !== incomingTsvHeader . charCodeAt ( i ) ) {
60
103
firstdiff = i ;
61
104
break ;
@@ -95,12 +138,12 @@ const onOpenValidationTsvGeneric = (content, link, tsvHeader, numColumns, idcolu
95
138
let location = idarray . indexOf ( cols [ idcolumn ] ) ;
96
139
if ( location === - 1 ) {
97
140
idarray . push ( cols [ idcolumn ] ) ;
98
- idarrayline . push ( i ) ;
141
+ idarrayline . push ( i + 1 ) ;
99
142
} else {
100
143
criticalNotices . push ( [
101
144
`${ link } #L${ line } ` ,
102
145
`${ line } ` ,
103
- `Row ID ${ cols [ idcolumn ] } is a duplicate of ID on row ${ idarrayline [ location + 1 ] } `
146
+ `Row ID ${ cols [ idcolumn ] } is a duplicate of ID on row ${ idarrayline [ location ] } `
104
147
] )
105
148
}
106
149
@@ -120,20 +163,37 @@ const onOpenValidationTsvGeneric = (content, link, tsvHeader, numColumns, idcolu
120
163
}
121
164
}
122
165
}
123
-
166
+ console . log ( "Number of on open notices found:" , criticalNotices . length )
124
167
return criticalNotices ;
125
168
}
126
169
127
170
export const onOpenValidation = ( filename , content , url ) => {
128
171
const link = url . replace ( '/src/' , '/blame/' ) ;
129
172
let criticalNotices = [ ] ;
130
173
131
- if ( filename . match ( / ^ t n _ ...\. t s v $ / ) ) {
174
+ if ( filename . match ( / ^ t n _ O B S \. t s v $ / ) ) {
175
+ criticalNotices = onOpenValidationObsTn ( content , link ) ;
176
+ } else if ( filename . match ( / ^ t n _ ...\. t s v $ / ) ) {
132
177
criticalNotices = onOpenValidationTn7 ( content , link ) ;
133
178
} else if ( filename . match ( / t n _ ..- ...\. t s v $ / ) ) {
134
179
criticalNotices = onOpenValidationTn9 ( content , link ) ;
180
+ } else if ( filename . match ( / ^ s n _ O B S \. t s v $ / ) ) {
181
+ criticalNotices = onOpenValidationObsSn ( content , link ) ;
182
+ } else if ( filename . match ( / ^ s n _ ...\. t s v $ / ) ) {
183
+ criticalNotices = onOpenValidationSn ( content , link ) ;
135
184
} else if ( filename . match ( / ^ t w l _ ...\. t s v $ / ) ) {
136
185
criticalNotices = onOpenValidationTwl ( content , link ) ;
186
+ } else if ( filename . match ( / ^ t q _ O B S \. t s v $ / ) ) {
187
+ criticalNotices = onOpenValidationObsTq ( content , link ) ;
188
+ } else if ( filename . match ( / ^ t q _ ...\. t s v $ / ) ) {
189
+ criticalNotices = onOpenValidationTq ( content , link ) ;
190
+ } else if ( filename . match ( / ^ s q _ O B S \. t s v $ / ) ) {
191
+ criticalNotices = onOpenValidationObsSq ( content , link ) ;
192
+ } else if ( filename . match ( / ^ s q _ ...\. t s v $ / ) ) {
193
+ criticalNotices = onOpenValidationSq ( content , link ) ;
137
194
}
195
+
196
+
197
+
138
198
return criticalNotices ;
139
- }
199
+ }
0 commit comments