From ef93512de83df4a5c8f86562b06c1d5f52375e87 Mon Sep 17 00:00:00 2001
From: Navin <navin.keswani@blake.com.au>
Date: Wed, 22 May 2013 21:38:45 +0200
Subject: [PATCH] Extract quote parsing into a method

---
 app/models/post.rb | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/app/models/post.rb b/app/models/post.rb
index 96510254839..2e0b4cddc31 100644
--- a/app/models/post.rb
+++ b/app/models/post.rb
@@ -421,12 +421,6 @@ class Post < ActiveRecord::Base
     self.quoted_post_numbers = []
 
     # Create relationships for the quotes
-    raw.scan(/\[quote=\"([^"]+)"\]/).each do |m|
-      if m.present?
-        args = {}
-        m.first.scan(/([a-z]+)\:(\d+)/).each do |arg|
-          args[arg[0].to_sym] = arg[1].to_i
-        end
 
         if args[:topic].present?
           # If the topic attribute is present, ensure it's the same topic
@@ -436,6 +430,8 @@ class Post < ActiveRecord::Base
         end
 
       end
+    raw.scan(/\[quote=\"([^"]+)"\]/).each do |quote|
+      args = parse_quote_into_arguments(quote)
     end
 
     self.quoted_post_numbers.uniq!
@@ -485,4 +481,12 @@ class Post < ActiveRecord::Base
   def add_error_if_count_exceeded(key_for_translation, current_count, max_count)
     errors.add(:base, I18n.t(key_for_translation, count: max_count)) if current_count > max_count
   end
+  def parse_quote_into_arguments(quote)
+    return {} unless quote.present?
+    args = {}
+    quote.first.scan(/([a-z]+)\:(\d+)/).each do |arg|
+      args[arg[0].to_sym] = arg[1].to_i
+    end
+    args
+  end
 end