discourse/lib/quote_comparer.rb
Sam Saffron d0d5a138c3
DEV: stop freezing frozen strings
We have the `# frozen_string_literal: true` comment on all our
files. This means all string literals are frozen. There is no need
to call #freeze on any literals.

For files with `# frozen_string_literal: true`

```
puts %w{a b}[0].frozen?
=> true

puts "hi".frozen?
=> true

puts "a #{1} b".frozen?
=> true

puts ("a " + "b").frozen?
=> false

puts (-("a " + "b")).frozen?
=> true
```

For more details see: https://samsaffron.com/archive/2018/02/16/reducing-string-duplication-in-ruby
2020-04-30 16:48:53 +10:00

27 lines
731 B
Ruby

# frozen_string_literal: true
class QuoteComparer
def self.whitespace
" \t\r\n"
end
def initialize(topic_id, post_number, text)
@topic_id = topic_id
@post_number = post_number
@text = text
@parent_post = Post.where(topic_id: @topic_id, post_number: @post_number).first
end
# This algorithm is far from perfect, but it follows the Discourse
# philosophy of "catch the obvious cases, leave moderation for the
# complicated ones"
def modified?
return true if @text.blank? || @parent_post.blank?
parent_text = Nokogiri::HTML::fragment(@parent_post.cooked).text.delete(QuoteComparer.whitespace)
text = @text.delete(QuoteComparer.whitespace)
!parent_text.include?(text)
end
end