From 4df868a42093be01ede62456ec3786c212b65d6a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9gis=20Hanol?= <regis@hanol.fr>
Date: Wed, 13 May 2015 19:56:09 +0200
Subject: [PATCH] FIX: update 'migrate_old_polls' rake task to support more
 cases

FIX: support list that uses double newlines
FIX: support list that uses spaces before the '-'
FIX: don't break lamentably when a poll wasn't created
---
 plugins/poll/lib/tasks/migrate_old_polls.rake | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/plugins/poll/lib/tasks/migrate_old_polls.rake b/plugins/poll/lib/tasks/migrate_old_polls.rake
index 6a3ba5982ff..feb7058ddc6 100644
--- a/plugins/poll/lib/tasks/migrate_old_polls.rake
+++ b/plugins/poll/lib/tasks/migrate_old_polls.rake
@@ -13,16 +13,18 @@ task "poll:migrate_old_polls" => :environment do
       putc "."
       # go back in time
       Timecop.freeze(post.created_at + 1.minute) do
+        post.raw = post.raw.gsub(/\n\n([ ]*- )/, "\n\\1") + "\n\n"
         # fix the RAW when needed
-        post.raw << "\n\n"
         if post.raw !~ /\[poll\]/
           lists = /^[ ]*- .+?$\n\n/m.match(post.raw)
           next if lists.blank? || lists.length == 0
           first_list = lists[0]
-          post.raw = post.raw.sub(first_list, "\n[poll]\n#{first_list.strip}\n[/poll]\n")
+          post.raw = post.raw.sub(first_list, "\n[poll]\n#{first_list}\n[/poll]\n")
         end
         # save the poll
         post.save
+        # make sure we have a poll
+        next if post.custom_fields.blank? || !post.custom_fields.include?("polls")
         # retrieve the new options
         options = post.custom_fields["polls"]["poll"]["options"]
         # iterate over all votes