Fixed word count grammar

Closes #349
- Added utility function to pluralize when appropriate.
This commit is contained in:
William Dibbern 2013-08-11 11:55:42 -05:00
parent 94155039ee
commit b92980ce6d
3 changed files with 59 additions and 3 deletions

View File

@ -82,4 +82,17 @@
$('.overlay').hideAway(); // TODO: Move to a more sensible global file.
/**
* Adds appropriate inflection for pluralizing the singular form of a word when appropriate.
* This is an overly simplistic implementation that does not handle irregular plurals.
* @param {Number} count
* @param {String} singularWord
* @returns {String}
*/
$.pluralize = function inflect(count, singularWord) {
var base = [count, ' ', singularWord];
return (count === 1) ? base.join('') : base.concat('s').join('');
};
}());

View File

@ -305,9 +305,9 @@
preview.innerHTML = this.converter.makeHtml(this.editor.getValue());
view.$('.js-drop-zone').upload({editor: true});
Countable.once(preview, function (counter) {
view.$('.entry-word-count').text(counter.words + ' words');
view.$('.entry-character-count').text(counter.characters + ' characters');
view.$('.entry-paragraph-count').text(counter.paragraphs + ' paragraphs');
view.$('.entry-word-count').text($.pluralize(counter.words, 'word'));
view.$('.entry-character-count').text($.pluralize(counter.characters, 'character'));
view.$('.entry-paragraph-count').text($.pluralize(counter.paragraphs, 'paragraph'));
});
},

View File

@ -84,3 +84,46 @@ casper.test.begin("Haunted markdown in editor works", 3, function suite(test) {
test.done();
});
});
casper.test.begin("Word count and plurality", 4, function suite(test) {
casper.test.filename = "editor_plurality_test.png";
casper.start(url + "ghost/editor", function testTitleAndUrl() {
test.assertTitle("", "Ghost admin has no title");
}).viewport(1280, 1024);
casper.then(function checkZeroPlural() {
test.assertSelectorHasText('.entry-word-count', '0 words', 'count of 0 produces plural "words".');
});
casper.then(function () {
casper.writeContentToCodeMirror('test');
});
// We must wait after sending keys to CodeMirror
casper.wait(1000, function doneWait() {
this.echo('I\'ve waited for 1 seconds.');
});
casper.then(function checkSinglular() {
test.assertSelectorHasText('.entry-word-count', '1 word', 'count of 1 produces singular "word".');
});
casper.then(function () {
casper.writeContentToCodeMirror('test'); // append another word, assumes newline
});
// We must wait after sending keys to CodeMirror
casper.wait(1000, function doneWait() {
this.echo('I\'ve waited for 1 seconds.');
});
casper.then(function checkPlural() {
test.assertSelectorHasText('.entry-word-count', '2 words', 'count of 2 produces plural "words".');
});
casper.run(function () {
test.done();
});
});