87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
helpers.logerror(e);
}
},
showDistance (s1, s2) {
console.log(`Distance: ${s1} / ${s2} = ${this.distanceDamerauLevenshtein(s1, s2)})`);
},
getStemFromSuffixCode: function (sFlex, sSfxCode) {
// Suffix only
if (sSfxCode == "0") {
return sFlex;
}
return sSfxCode[0] == '0' ? sFlex + sSfxCode.slice(1) : sFlex.slice(0, -(sSfxCode.charCodeAt(0)-48)) + sSfxCode.slice(1);
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
helpers.logerror(e);
}
},
showDistance (s1, s2) {
console.log(`Distance: ${s1} / ${s2} = ${this.distanceDamerauLevenshtein(s1, s2)})`);
},
// Suffix only
defineSuffixCode: function (sFlex, sStem) {
/*
Returns a string defining how to get stem from flexion
"n(sfx)"
with n: a char with numeric meaning, "0" = 0, "1" = 1, ... ":" = 10, etc. (See ASCII table.) Says how many letters to strip from flexion.
sfx [optional]: string to add on flexion
Examples:
"0": strips nothing, adds nothing
"1er": strips 1 letter, adds "er"
"2": strips 2 letters, adds nothing
*/
if (sFlex == sStem) {
return "0";
}
let jSfx = 0;
for (let i = 0; i < Math.min(sFlex.length, sStem.length); i++) {
if (sFlex[i] !== sStem[i]) {
break;
}
jSfx += 1;
}
return String.fromCharCode(sFlex.length-jSfx+48) + sStem.slice(jSfx);
},
getStemFromSuffixCode: function (sFlex, sSfxCode) {
// Suffix only
if (sSfxCode == "0") {
return sFlex;
}
return sSfxCode[0] == '0' ? sFlex + sSfxCode.slice(1) : sFlex.slice(0, -(sSfxCode.charCodeAt(0)-48)) + sSfxCode.slice(1);
|