fix duplicate definition issue
This commit is contained in:
1 parent
1c28c22fb5
commit
d4c65ce06f
1 file changed
+30
-6
+30
-6
@@ -896,6 +896,29 @@ function sort_results(text, results)
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function skip_rereferenced_entries(results)
|
||||||
|
{
|
||||||
|
let newresults = [];
|
||||||
|
let seenseq = new Set();
|
||||||
|
|
||||||
|
console.log(results);
|
||||||
|
for(let lookup of results)
|
||||||
|
{
|
||||||
|
let newlookup = [];
|
||||||
|
console.log(lookup);
|
||||||
|
for(let entry of lookup.result)
|
||||||
|
{
|
||||||
|
if(seenseq.has(entry.seq))
|
||||||
|
continue;
|
||||||
|
seenseq.add(entry.seq);
|
||||||
|
newlookup.push(entry);
|
||||||
|
}
|
||||||
|
if(newlookup.length > 0)
|
||||||
|
newresults.push({text:lookup.text, result:newlookup});
|
||||||
|
}
|
||||||
|
return newresults;
|
||||||
|
}
|
||||||
|
|
||||||
let last_lookup = "";
|
let last_lookup = "";
|
||||||
let last_time_lookup = Date.now();
|
let last_time_lookup = Date.now();
|
||||||
function lookup_indirect(text, time, divexisted, alternatives_mode, strict_alternatives)
|
function lookup_indirect(text, time, divexisted, alternatives_mode, strict_alternatives)
|
||||||
@@ -913,6 +936,7 @@ function lookup_indirect(text, time, divexisted, alternatives_mode, strict_alter
|
|||||||
// deconjugate() returns possible deconjugations, one of which has zero deconjugations, i.e. the plain text
|
// deconjugate() returns possible deconjugations, one of which has zero deconjugations, i.e. the plain text
|
||||||
// build_lookup_comb looks for dictionary definitions matching any deconjugation, returning a list of them
|
// build_lookup_comb looks for dictionary definitions matching any deconjugation, returning a list of them
|
||||||
//console.log("trying to look up " + text);
|
//console.log("trying to look up " + text);
|
||||||
|
// FIXME: later lookups using definitions already caught
|
||||||
if(alternatives_mode == 0 || alternatives_mode == 1 || alternatives_mode == 2)
|
if(alternatives_mode == 0 || alternatives_mode == 1 || alternatives_mode == 2)
|
||||||
{
|
{
|
||||||
let forms = deconjugate(text);
|
let forms = deconjugate(text);
|
||||||
@@ -930,7 +954,7 @@ function lookup_indirect(text, time, divexisted, alternatives_mode, strict_alter
|
|||||||
//console.log(text)
|
//console.log(text)
|
||||||
result = sort_results(text, result);
|
result = sort_results(text, result);
|
||||||
if(alternatives_mode == 0 || text.length <= 1)
|
if(alternatives_mode == 0 || text.length <= 1)
|
||||||
return {text:text, result:result};
|
return skip_rereferenced_entries([{text:text, result:result}]);
|
||||||
else if(alternatives_mode == 1) // second longest too
|
else if(alternatives_mode == 1) // second longest too
|
||||||
{
|
{
|
||||||
let len = text.length-1;
|
let len = text.length-1;
|
||||||
@@ -950,10 +974,10 @@ function lookup_indirect(text, time, divexisted, alternatives_mode, strict_alter
|
|||||||
if(short_result !== undefined && short_result.length > 0)
|
if(short_result !== undefined && short_result.length > 0)
|
||||||
{
|
{
|
||||||
short_result = sort_results(short_text, short_result);
|
short_result = sort_results(short_text, short_result);
|
||||||
return [{text:text, result:result}, {text:short_text, result:short_result}];
|
return skip_rereferenced_entries([{text:text, result:result}, {text:short_text, result:short_result}]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return {text:text, result:result};
|
return skip_rereferenced_entries([{text:text, result:result}]);
|
||||||
}
|
}
|
||||||
else if(alternatives_mode == 2) // shortest too
|
else if(alternatives_mode == 2) // shortest too
|
||||||
{
|
{
|
||||||
@@ -974,10 +998,10 @@ function lookup_indirect(text, time, divexisted, alternatives_mode, strict_alter
|
|||||||
if(short_result !== undefined && short_result.length > 0)
|
if(short_result !== undefined && short_result.length > 0)
|
||||||
{
|
{
|
||||||
short_result = sort_results(short_text, short_result);
|
short_result = sort_results(short_text, short_result);
|
||||||
return [{text:text, result:result}, {text:short_text, result:short_result}];
|
return skip_rereferenced_entries([{text:text, result:result}, {text:short_text, result:short_result}]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return {text:text, result:result};
|
return skip_rereferenced_entries([{text:text, result:result}]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1004,7 +1028,7 @@ function lookup_indirect(text, time, divexisted, alternatives_mode, strict_alter
|
|||||||
}
|
}
|
||||||
//console.log(results);
|
//console.log(results);
|
||||||
if(results.length > 0)
|
if(results.length > 0)
|
||||||
return results;
|
return skip_rereferenced_entries(results);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user