diff --git a/lib/jekyll/migrators/mt.rb b/lib/jekyll/migrators/mt.rb index 27b12226..91d55c38 100644 --- a/lib/jekyll/migrators/mt.rb +++ b/lib/jekyll/migrators/mt.rb @@ -5,6 +5,7 @@ require 'rubygems' require 'sequel' require 'fileutils' +require 'yaml' # NOTE: This converter requires Sequel and the MySQL gems. # The MySQL gem can be difficult to install on OS X. Once you have MySQL @@ -17,7 +18,7 @@ module Jekyll # This query will pull blog posts from all entries across all blogs. If # you've got unpublished, deleted or otherwise hidden posts please sift # through the created posts to make sure nothing is accidently published. - QUERY = "SELECT entry_id, entry_basename, entry_text, entry_text_more, entry_created_on, entry_title FROM mt_entry" + QUERY = "SELECT entry_id, entry_basename, entry_text, entry_text_more, entry_created_on, entry_title, entry_convert_breaks FROM mt_entry" def self.process(dbname, user, pass, host = 'localhost') db = Sequel.mysql(dbname, :user => user, :password => pass, :host => host) @@ -30,6 +31,7 @@ module Jekyll date = post[:entry_created_on] content = post[:entry_text] more_content = post[:entry_text_more] + entry_convert_breaks = post[:entry_convert_breaks] # Be sure to include the body and extended body. if more_content != nil @@ -39,7 +41,7 @@ module Jekyll # Ideally, this script would determine the post format (markdown, html # , etc) and create files with proper extensions. At this point it # just assumes that markdown will be acceptable. - name = [date.year, date.month, date.day, slug].join('-') + ".markdown" + name = [date.year, date.month, date.day, slug].join('-') + '.' + self.suffix(entry_convert_breaks) data = { 'layout' => 'post', @@ -55,5 +57,21 @@ module Jekyll end end + + def self.suffix(entry_type) + if entry_type.nil? || entry_type.include?("markdown") + # The markdown plugin I have saves this as "markdown_with_smarty_pants", so I just look for "markdown". + "markdown" + elsif entry_type.include?("textile") + # This is saved as "textile_2" on my installation of MT 5.1. + "textile" + elsif entry_type == "0" || entry_type.include?("richtext") + # richtext looks to me like it's saved as HTML, so I include it here. + "html" + else + # Other values might need custom work. + entry_type + end + end end end