Ubuntu 21.04 aarch64 portability; Bug fixes.

This commit is contained in:
Robin Davies
2021-10-02 05:23:56 -04:00
parent 64c1806ce3
commit 11b2a94b17
14 changed files with 418 additions and 33 deletions
+73
View File
@@ -0,0 +1,73 @@
let escapedCharacters = /[^a-zA-Z0-9]/g;
function stringToRegex(text: string): RegExp
{
text = text.replace(escapedCharacters,"\\$&");
return new RegExp(text,"i");
}
class SearchFilter {
regexes: RegExp[];
constructor(text: string)
{
let regexes: RegExp[] = [];
let bits = text.split(' ');
for (let bit of bits)
{
if (bit.length !== 0)
{
regexes.push(stringToRegex(bit));
}
}
this.regexes = regexes;
}
score(...strings: string[]): number {
let score = 0;
for (let r = 0; r < this.regexes.length; ++r)
{
let regex = this.regexes[r];
regex.lastIndex = 0;
let matched = false;
for (let i = 0; i < strings.length; ++i)
{
let s = strings[i];
let m = regex.exec(s);
if (m) {
matched = true;
if (m.index === 0)
{
if (r === 0 && i === 0) {
score += 16;
} else {
score += 8;
}
}
let end = m.index + m[0].length;
if (end === s.length || (end < s.length && s[end] === ' ')) // word boundary
{
score += 2;
} else {
score += 1;
}
break;
}
}
if (!matched) return 0;
}
return score;
}
};
export default SearchFilter;