From 735a48415d4d8da878c52f504cbab3713a6b0eb6 Mon Sep 17 00:00:00 2001 From: Arpit Jalan Date: Mon, 10 Dec 2018 10:28:07 +0530 Subject: [PATCH] FEATURE: option to use ruby-bbcode-to-md in bulk import script ruby-bbcode-to-md provides better bbcode to markdown conversion --- script/bulk_import/base.rb | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/script/bulk_import/base.rb b/script/bulk_import/base.rb index ce6ef27d3d8..cf1be396370 100644 --- a/script/bulk_import/base.rb +++ b/script/bulk_import/base.rb @@ -1,3 +1,16 @@ +if ARGV.include?('bbcode-to-md') + # Replace (most) bbcode with markdown before creating posts. + # This will dramatically clean up the final posts in Discourse. + # + # In a temp dir: + # + # git clone https://github.com/nlalonde/ruby-bbcode-to-md.git + # cd ruby-bbcode-to-md + # gem build ruby-bbcode-to-md.gemspec + # gem install ruby-bbcode-to-md-*.gem + require 'ruby-bbcode-to-md' +end + require "pg" require "set" require "redcarpet" @@ -66,6 +79,7 @@ class BulkImport::Base @uploader = ImportScripts::Uploader.new @html_entities = HTMLEntities.new @encoding = CHARSET_MAP[charset] + @bbcode_to_md = true if use_bbcode_to_md? @markdown = Redcarpet::Markdown.new( Redcarpet::Render::HTML.new(hard_wrap: true), @@ -172,6 +186,10 @@ class BulkImport::Base @last_post_action_id = last_id(PostAction) end + def use_bbcode_to_md? + ARGV.include?("bbcode-to-md") + end + def execute raise NotImplementedError end @@ -463,6 +481,9 @@ class BulkImport::Base @topic_id_by_post_id[post[:id]] = post[:topic_id] post[:raw] = (post[:raw] || "").scrub.strip.presence || "" post[:raw] = process_raw post[:raw] + if @bbcode_to_md + post[:raw] = post[:raw].bbcode_to_md(false) rescue post[:raw] + end post[:like_count] ||= 0 post[:cooked] = pre_cook post[:raw] post[:hidden] ||= false