mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FEATURE: normalize whitespaces in topic title/post content
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user