FEATURE: normalize whitespaces in topic title/post content

This commit is contained in:
Régis Hanol 2014-08-12 00:01:58 +02:00
parent 996d14965e
commit f4208ae83f
4 changed files with 22 additions and 1 deletions

View File

@ -203,6 +203,8 @@ class PostCreator
end
def setup_post
@opts[:raw] = TextCleaner.normalize_whitespaces(@opts[:raw]).strip
post = @topic.posts.new(raw: @opts[:raw],
user: @user,
reply_to_post_number: @opts[:reply_to_post_number])

View File

@ -17,7 +17,10 @@ class PostRevisor
# :skip_validation ask ActiveRecord to skip validations
#
def revise!(editor, new_raw, opts = {})
@editor, @new_raw, @opts = editor, new_raw, opts
@editor = editor
@opts = opts
@new_raw = TextCleaner.normalize_whitespaces(new_raw).strip
return false unless should_revise?
@post.acting_user = @editor
revise_post

View File

@ -36,10 +36,18 @@ class TextCleaner
text.sub!(/\s+([!?]\s*)\z/, '\1') if opts[:remove_extraneous_space]
# Fixes interior spaces
text.gsub!(/ +/, ' ') if opts[:fixes_interior_spaces]
# Normalize whitespaces
text = normalize_whitespaces(text)
# Strip whitespaces
text.strip! if opts[:strip_whitespaces]
text
end
@@whitespaces_regexp = Regexp.new("(\u00A0|\u1680|\u180E|[\u2000-\u200B]|\u2028|\u2029|\u202F|\u205F|\u3000|\uFEFF)", "u").freeze
def self.normalize_whitespaces(text)
text.gsub(@@whitespaces_regexp, ' ')
end
end

View File

@ -191,4 +191,12 @@ describe TextCleaner do
end
describe "#normalize_whitespaces" do
it "normalize whitespaces" do
whitespaces = "\u0020\u00A0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u200B\u2028\u2029\u202F\u205F\u3000\uFEFF"
whitespaces.strip.should_not == ""
TextCleaner.normalize_whitespaces(whitespaces).strip.should == ""
end
end
end