Class: PostMerger
- Inherits:
-
Object
- Object
- PostMerger
- Defined in:
- lib/post_merger.rb
Defined Under Namespace
Classes: CannotMergeError
Instance Method Summary collapse
-
#initialize(user, posts) ⇒ PostMerger
constructor
A new instance of PostMerger.
- #merge ⇒ Object
Constructor Details
#initialize(user, posts) ⇒ PostMerger
Returns a new instance of PostMerger.
7 8 9 10 |
# File 'lib/post_merger.rb', line 7 def initialize(user, posts) @user = user @posts = posts end |
Instance Method Details
#merge ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/post_merger.rb', line 12 def merge return if @posts.count < 2 ensure_same_topic! ensure_same_user! guardian = Guardian.new(@user) ensure_can_merge!(guardian) posts = @posts.sort_by do |post| guardian.ensure_can_delete!(post) post.post_number end post_content = posts.map(&:raw) post = posts.pop merged_post_raw = post_content.join("\n\n") changes = { raw: merged_post_raw, edit_reason: I18n.t("merge_posts.edit_reason", count: posts.length, username: @user.username), } ensure_max_post_length!(merged_post_raw) PostRevisor .new(post, post.topic) .revise!(@user, changes) { posts.each { |p| PostDestroyer.new(@user, p).destroy } } end |