Index: gc_lang/fr/modules-js/phonet.js ================================================================== --- gc_lang/fr/modules-js/phonet.js +++ gc_lang/fr/modules-js/phonet.js @@ -82,31 +82,36 @@ } } return aSelect; }, - isSimilAs: function (sWord, sSimil) { - // return True if phonetically similar to ( tested with several casing) - if (!sWord) { - return false; - } - let lSimils = this.getSimil(sSimil); - if (lSimils.length == 0) { - return false; - } - if (lSimils.includes(sWord)) { - return true; + _getSetNumber (sWord) { + // return the set number where belongs, else -1 + if (this._dWord.has(sWord)) { + return this._dWord.get(sWord); } if (sWord.slice(0,1).gl_isUpperCase()) { - if (lSimils.includes(sWord.toLowerCase())) { - return true; + if (this._dWord.has(sWord.toLowerCase())) { + return this._dWord.get(sWord.toLowerCase()); } - if (sWord.gl_isUpperCase() && lSimils.includes(sWord.gl_toCapitalize())) { - return true; + if (sWord.gl_isUpperCase() && this._dWord.has(sWord.gl_toCapitalize())) { + return this._dWord.get(sWord.gl_toCapitalize()); } } - return false; + return -1; + }, + + isSimilAs: function (sWord, sSimil) { + // return True if phonetically similar to ( tested with several casing) + if (!sWord || !sSimil) { + return false; + } + let n = this._getSetNumber(sWord); + if (n == -1) { + return false; + } + return n == this._getSetNumber(sSimil); } }; // Initialization Index: gc_lang/fr/modules/phonet.py ================================================================== --- gc_lang/fr/modules/phonet.py +++ gc_lang/fr/modules/phonet.py @@ -50,21 +50,26 @@ for sMorph in _dMorph.get(sSimil, []): if re.search(sPattern, sMorph): aSelect.add(sSimil) return aSelect + +def _getSetNumber (sWord): + "return the set number where belongs, else -1" + if sWord in _dWord: + return _dWord[sWord] + if sWord[0:1].isupper(): + if sWord.lower() in _dWord: + return _dWord[sWord.lower()] + if sWord.isupper() and sWord.capitalize() in _dWord: + return _dWord[sWord.capitalize()] + return -1 + def isSimilAs (sWord, sSimil): "return True if phonetically similar to ( tested with several casing)" - if not sWord: - return False - lSimils = getSimil(sSimil) - if not lSimils: - return False - if sWord in lSimils: - return True - if sWord[0:1].isupper(): - if sWord.lower() in lSimils: - return True - if sWord.isupper() and sWord.capitalize() in lSimils: - return True - return False + if not sWord or not sSimil: + return False + n = _getSetNumber(sWord) + if n == -1: + return False + return n == _getSetNumber(sSimil)