Skip to content

Commit e8ed76c

Browse files
authored
Bug cn 1195 extend on open validation to all tsv types (#1295)
#1195
1 parent 190c442 commit e8ed76c

File tree

2 files changed

+68
-8
lines changed

2 files changed

+68
-8
lines changed

public/build_number

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
152-ecc4be0
1+
153-d1b4fc1

src/core/onOpenValidations.js

Lines changed: 67 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,31 +15,75 @@
1515
*/
1616
import * as tsvparser from 'uw-tsv-parser';
1717

18+
// legacy note format
1819
const onOpenValidationTn9 = (content, url) => {
20+
console.log("... on open matched a legacy note format.")
1921
const tsvHeader = "Book\tChapter\tVerse\tID\tSupportReference\tOrigQuote\tOccurrence\tGLQuote\tOccurrenceNote";
2022
const numColumns = 9;
2123
const idcolumn = 3; //zero based
2224
return onOpenValidationTsvGeneric(content, url, tsvHeader, numColumns, idcolumn);
2325
}
26+
27+
// Note TSV formats
2428
const onOpenValidationTn7 = (content, url) => {
29+
console.log("... on open matched a Note format.")
2530
const tsvHeader = "Reference\tID\tTags\tSupportReference\tQuote\tOccurrence\tNote";
2631
const numColumns = 7;
2732
const idcolumn = 1; //zero based
2833
return onOpenValidationTsvGeneric(content, url, tsvHeader, numColumns, idcolumn);
2934
}
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
3049
const onOpenValidationTwl = (content, url) => {
50+
console.log("... on open matched a TWL format.")
3151
const tsvHeader = "Reference\tID\tTags\tOrigWords\tOccurrence\tTWLink";
3252
const numColumns = 6;
3353
const idcolumn = 1; //zero based
3454
return onOpenValidationTsvGeneric(content, url, tsvHeader, numColumns, idcolumn);
3555
}
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+
*/
3681
const onOpenValidationTsvGeneric = (content, link, tsvHeader, numColumns, idcolumn) => {
3782
const { data, header } = tsvparser.tsvStringToTable(content);
3883
let idarray = [];
3984
let idarrayline = [];
4085
let criticalNotices = [];
4186
const incomingTsvHeader = header.join('\t');
42-
4387
// is the content correct?
4488
if (tsvHeader !== incomingTsvHeader) {
4589
criticalNotices.push([
@@ -55,7 +99,6 @@ const onOpenValidationTsvGeneric = (content, link, tsvHeader, numColumns, idcolu
5599
let firstdiff = -1;
56100
let maxlength = Math.max(tsvHeader.length, incomingTsvHeader.length);
57101
for (let i = 0; i < maxlength; i++) {
58-
//console.log("s vs t:", tsvHeader[i], rows[0][i]);
59102
if (tsvHeader.charCodeAt(i) !== incomingTsvHeader.charCodeAt(i)) {
60103
firstdiff = i;
61104
break;
@@ -95,12 +138,12 @@ const onOpenValidationTsvGeneric = (content, link, tsvHeader, numColumns, idcolu
95138
let location = idarray.indexOf(cols[idcolumn]);
96139
if (location === -1) {
97140
idarray.push(cols[idcolumn]);
98-
idarrayline.push(i);
141+
idarrayline.push(i + 1);
99142
} else {
100143
criticalNotices.push([
101144
`${link}#L${line}`,
102145
`${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]}`
104147
])
105148
}
106149

@@ -120,20 +163,37 @@ const onOpenValidationTsvGeneric = (content, link, tsvHeader, numColumns, idcolu
120163
}
121164
}
122165
}
123-
166+
console.log("Number of on open notices found:", criticalNotices.length)
124167
return criticalNotices;
125168
}
126169

127170
export const onOpenValidation = (filename, content, url) => {
128171
const link = url.replace('/src/', '/blame/');
129172
let criticalNotices = [];
130173

131-
if (filename.match(/^tn_...\.tsv$/)) {
174+
if (filename.match(/^tn_OBS\.tsv$/)) {
175+
criticalNotices = onOpenValidationObsTn(content, link);
176+
} else if (filename.match(/^tn_...\.tsv$/)) {
132177
criticalNotices = onOpenValidationTn7(content, link);
133178
} else if (filename.match(/tn_..-...\.tsv$/)) {
134179
criticalNotices = onOpenValidationTn9(content, link);
180+
} else if (filename.match(/^sn_OBS\.tsv$/)) {
181+
criticalNotices = onOpenValidationObsSn(content, link);
182+
} else if (filename.match(/^sn_...\.tsv$/)) {
183+
criticalNotices = onOpenValidationSn(content, link);
135184
} else if (filename.match(/^twl_...\.tsv$/)) {
136185
criticalNotices = onOpenValidationTwl(content, link);
186+
} else if (filename.match(/^tq_OBS\.tsv$/)) {
187+
criticalNotices = onOpenValidationObsTq(content, link);
188+
} else if (filename.match(/^tq_...\.tsv$/)) {
189+
criticalNotices = onOpenValidationTq(content, link);
190+
} else if (filename.match(/^sq_OBS\.tsv$/)) {
191+
criticalNotices = onOpenValidationObsSq(content, link);
192+
} else if (filename.match(/^sq_...\.tsv$/)) {
193+
criticalNotices = onOpenValidationSq(content, link);
137194
}
195+
196+
197+
138198
return criticalNotices;
139-
}
199+
}

0 commit comments

Comments
 (0)