Merge pull request #869 from torlenor/MM-562
Preserve case of first letter in spell check, fixes #562
This commit is contained in:
@@ -70,7 +70,24 @@ export default class SpellChecker extends EventEmitter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getSuggestions(word, maxSuggestions) {
|
getSuggestions(word, maxSuggestions) {
|
||||||
return this.dict.getSuggestions(word, maxSuggestions);
|
const suggestions = this.dict.getSuggestions(word, maxSuggestions);
|
||||||
|
|
||||||
|
const firstCharWord = word.charAt(0);
|
||||||
|
let i;
|
||||||
|
for (i = 0; i < suggestions.length; i++) {
|
||||||
|
if (suggestions[i].charAt(0).toUpperCase() === firstCharWord.toUpperCase()) {
|
||||||
|
suggestions[i] = firstCharWord + suggestions[i].slice(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const uniqueSuggestions = suggestions.reduce((a, b) => {
|
||||||
|
if (a.indexOf(b) < 0) {
|
||||||
|
a.push(b);
|
||||||
|
}
|
||||||
|
return a;
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
return uniqueSuggestions;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -67,6 +67,27 @@ describe('main/Spellchecker.js', function() {
|
|||||||
spellchecker.spellCheck('Mattermost').should.equal(true);
|
spellchecker.spellCheck('Mattermost').should.equal(true);
|
||||||
spellchecker.spellCheck('mattermost').should.equal(true);
|
spellchecker.spellCheck('mattermost').should.equal(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should give at most the requested number of suggestions', function() {
|
||||||
|
// helllo known to give at least 4 suggestions
|
||||||
|
spellchecker.getSuggestions('helllo', 4).length.should.be.equal(4);
|
||||||
|
spellchecker.getSuggestions('helllo', 1).length.should.be.equal(1);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should give suggestions which preserve case of first letter', function() {
|
||||||
|
let suggestions = spellchecker.getSuggestions('carr', 4);
|
||||||
|
suggestions.length.should.not.be.equal(0);
|
||||||
|
let i;
|
||||||
|
for (i = 0; i < suggestions.length; i++) {
|
||||||
|
suggestions[i].charAt(0).should.be.equal('c');
|
||||||
|
}
|
||||||
|
|
||||||
|
suggestions = spellchecker.getSuggestions('Carr', 4);
|
||||||
|
suggestions.length.should.not.be.equal(0);
|
||||||
|
for (i = 0; i < suggestions.length; i++) {
|
||||||
|
suggestions[i].charAt(0).should.be.equal('C');
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('en-GB', function() {
|
describe('en-GB', function() {
|
||||||
@@ -107,5 +128,20 @@ describe('main/Spellchecker.js', function() {
|
|||||||
spellchecker.spellCheck('-100').should.equal(true);
|
spellchecker.spellCheck('-100').should.equal(true);
|
||||||
spellchecker.spellCheck('3.14').should.equal(true);
|
spellchecker.spellCheck('3.14').should.equal(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should give suggestions which preserve case of first letter', function() {
|
||||||
|
let suggestions = spellchecker.getSuggestions('gutenn', 4);
|
||||||
|
suggestions.length.should.not.be.equal(0);
|
||||||
|
let i;
|
||||||
|
for (i = 0; i < suggestions.length; i++) {
|
||||||
|
suggestions[i].charAt(0).should.be.equal('g');
|
||||||
|
}
|
||||||
|
|
||||||
|
suggestions = spellchecker.getSuggestions('Gutenn', 4);
|
||||||
|
suggestions.length.should.not.be.equal(0);
|
||||||
|
for (i = 0; i < suggestions.length; i++) {
|
||||||
|
suggestions[i].charAt(0).should.be.equal('G');
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user