FEATURE: normalize whitespaces in topic title/post content
This commit is contained in:
parent
996d14965e
commit
f4208ae83f
|
@ -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])
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue