From 165e3a4efa651b77fdd29c74e57e28cad69ba421 Mon Sep 17 00:00:00 2001 From: r888888888 Date: Thu, 27 Feb 2014 13:41:36 -0800 Subject: [PATCH] fixes #530 --- app/assets/javascripts/comments.js | 13 ++++++++++++- app/logical/d_text.rb | 22 ++++++++++++++++++++++ app/models/forum_post.rb | 2 +- app/models/post.rb | 2 +- 4 files changed, 36 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/comments.js b/app/assets/javascripts/comments.js index de354e25e..0b2366d07 100644 --- a/app/assets/javascripts/comments.js +++ b/app/assets/javascripts/comments.js @@ -19,7 +19,18 @@ } Danbooru.Comment.quote_message = function(data) { - var stripped_body = data["body"].replace(/\[quote\](?:.|\n|\r)+?\[\/quote\](?:\r\n|\r|\n)*/gm, ""); + var blocks = data["body"].match(/\[\/?quote\]|./gm); + var n = 0; + var stripped_body = ""; + $.each(blocks, function(i, block) { + if (block === "[quote]") { + n += 1; + } else if (block == "[/quote]") { + n -= 1; + } else if (n === 0) { + stripped_body += block; + } + }); return "[quote]\n" + data["creator_name"] + " said:\n\n" + stripped_body + "\n[/quote]\n\n"; } diff --git a/app/logical/d_text.rb b/app/logical/d_text.rb index 0123c3791..b1cb7a5bc 100644 --- a/app/logical/d_text.rb +++ b/app/logical/d_text.rb @@ -10,6 +10,28 @@ class DText CGI.escapeHTML(string) end + def self.strip_blocks(string, tag) + blocks = string.scan(/\[\/?#{tag}\]|.+?(?=\[\/?#{tag}\]|$)/m) + n = 0 + stripped = "" + blocks.each do |block| + case block + when "[#{tag}]" + n += 1 + + when "[/#{tag}]" + n -= 1 + + else + if n == 0 + stripped += block + end + end + end + + stripped.strip + end + def self.parse_inline(str, options = {}) str.gsub!(/&/, "&") str.gsub!(/