diff --git a/app/assets/javascripts/discourse/models/composer.js b/app/assets/javascripts/discourse/models/composer.js index 247b767723b..9f7fdb2f064 100644 --- a/app/assets/javascripts/discourse/models/composer.js +++ b/app/assets/javascripts/discourse/models/composer.js @@ -478,7 +478,7 @@ Discourse.Composer = Discourse.Model.extend({ }, /** - Computes the length of the reply minus the quote(s). + Computes the length of the reply minus the quote(s) and non-significant whitespaces @property replyLength **/ @@ -486,7 +486,7 @@ Discourse.Composer = Discourse.Model.extend({ var reply = this.get('reply'); if(!reply) reply = ""; while (Discourse.BBCode.QUOTE_REGEXP.test(reply)) { reply = reply.replace(Discourse.BBCode.QUOTE_REGEXP, ""); } - return reply.trim().length; + return reply.replace(/\s+/img, " ").trim().length; }.property('reply') }); diff --git a/spec/javascripts/models/composer_spec.js b/spec/javascripts/models/composer_spec.js index ec5e3a17982..d1492a74313 100644 --- a/spec/javascripts/models/composer_spec.js +++ b/spec/javascripts/models/composer_spec.js @@ -10,10 +10,16 @@ describe("Discourse.Composer", function() { }); it("trims whitespaces", function() { - var composer = Discourse.Composer.create({ reply: "\nbasic reply\t" }); + var composer = Discourse.Composer.create({ reply: " \nbasic reply\t" }); expect(composer.get('replyLength')).toBe(11); }); + it("count only significant whitespaces", function() { + // this will count the '\n' only once + var composer = Discourse.Composer.create({ reply: "ba sic\n\nreply" }); + expect(composer.get('replyLength')).toBe(12); + }); + it("removes quotes", function() { var composer = Discourse.Composer.create({ reply: "1[quote=]not counted[/quote]2[quote=]at all[/quote]3" }); expect(composer.get('replyLength')).toBe(3);