From 24e9f81f5a35fd5d8a3fdd60b6c8370b481f5cb2 Mon Sep 17 00:00:00 2001 From: Hugo Peixoto Date: Tue, 29 Sep 2020 15:38:36 +0100 Subject: [PATCH] Fix newlines being chomped in RSS import (#10476) The CustomText converter was monkey patched to fix a bug related to preserve_tags. Somewhere in that process, remove_inner_newlines was changed to strip newlines completely, instead of replacing them with a single space. This restores that functionality. In development mode, files are not eager loaded. That means that the converters were not being required, so it was not possible to reproduce that issue in development mode (since it was falling back to the original converter, which does not have the bug). This commit also adds an initializer that requires every converter. --- .../reverse_markdown/converters/custom_text.rb | 2 +- config/initializers/reverse_markdown.rb | 3 +++ .../converters/custom_text_spec.rb | 16 ++++++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 config/initializers/reverse_markdown.rb create mode 100644 spec/lib/reverse_markdown/converters/custom_text_spec.rb diff --git a/app/lib/reverse_markdown/converters/custom_text.rb b/app/lib/reverse_markdown/converters/custom_text.rb index c9b63b49a..28148e303 100644 --- a/app/lib/reverse_markdown/converters/custom_text.rb +++ b/app/lib/reverse_markdown/converters/custom_text.rb @@ -40,7 +40,7 @@ module ReverseMarkdown end def remove_inner_newlines(text) - text.tr("\n\t", "") + text.tr("\r\n\t", " ").squeeze(" ") end def preserve_keychars_within_backticks(text) diff --git a/config/initializers/reverse_markdown.rb b/config/initializers/reverse_markdown.rb new file mode 100644 index 000000000..fcbd408b2 --- /dev/null +++ b/config/initializers/reverse_markdown.rb @@ -0,0 +1,3 @@ +Dir.glob(Rails.root.join("app/lib/reverse_markdown/converters/*.rb")).sort.each do |filename| + require_dependency filename +end diff --git a/spec/lib/reverse_markdown/converters/custom_text_spec.rb b/spec/lib/reverse_markdown/converters/custom_text_spec.rb new file mode 100644 index 000000000..34d31fe3b --- /dev/null +++ b/spec/lib/reverse_markdown/converters/custom_text_spec.rb @@ -0,0 +1,16 @@ +require "rails_helper" + +RSpec.describe ReverseMarkdown::Converters::CustomText, type: :lib do + def create_custom_text + ReverseMarkdown.config.github_flavored = true + described_class.new + end + + describe "#convert" do + it "keeps some blankspace between lines in the same paragraph" do + node = Nokogiri::HTML("newlines\nbecome\nspaces") + result = create_custom_text.convert(node) + expect(result).to eq("newlines become spaces") + end + end +end