From aba508928344cb2987b26cb33f7309b5966b0c5f Mon Sep 17 00:00:00 2001 From: Chris Van Pelt Date: Sun, 23 Nov 2008 14:55:39 -0800 Subject: [PATCH] Various conversion scripts from other blogging engines --- lib/jekyll/converters/csv.rb | 26 ++++++++++++++++++++++++++ lib/jekyll/converters/mephisto.rb | 24 ++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 lib/jekyll/converters/csv.rb create mode 100644 lib/jekyll/converters/mephisto.rb diff --git a/lib/jekyll/converters/csv.rb b/lib/jekyll/converters/csv.rb new file mode 100644 index 00000000..657b35b7 --- /dev/null +++ b/lib/jekyll/converters/csv.rb @@ -0,0 +1,26 @@ +module Jekyll + module CSV + #Reads a csv with title, permalink, body, published_at, and filter. + #It creates a post file for each row in the csv + def self.process(file = "posts.csv") + FileUtils.mkdir_p "_posts" + posts = 0 + FasterCSV.foreach(file) do |row| + next if row[0] == "title" + posts += 1 + name = row[3].split(" ")[0]+"-"+row[1]+(row[4] =~ /markdown/ ? ".markdown" : ".textile") + File.open("_posts/#{name}", "w") do |f| + f.puts <<-HEADER +--- +layout: post +title: #{row[0]} +--- + + HEADER + f.puts row[2] + end + end + "Created #{posts} posts!" + end + end +end \ No newline at end of file diff --git a/lib/jekyll/converters/mephisto.rb b/lib/jekyll/converters/mephisto.rb new file mode 100644 index 00000000..cf2bb8ea --- /dev/null +++ b/lib/jekyll/converters/mephisto.rb @@ -0,0 +1,24 @@ +require 'rubygems' +require 'fastercsv' +require 'fileutils' +require File.join(File.dirname(__FILE__),"csv.rb") +module Jekyll + module Mephisto + #Accepts a hash with database config variables, exports mephisto posts into a csv + #export PGPASSWORD if you must + def self.postgres(c) + sql = <<-SQL + BEGIN; + CREATE TEMP TABLE jekyll AS + SELECT title, permalink, body, published_at, filter FROM contents + WHERE user_id = 1 AND type = 'Article' ORDER BY published_at; + COPY jekyll TO STDOUT WITH CSV HEADER; + ROLLBACK; + SQL + command = %Q(psql -h #{c[:host] || "localhost"} -c "#{sql.strip}" #{c[:database]} #{c[:username]} -o #{c[:filename] || "posts.csv"}) + puts command + `#{command}` + CSV.process + end + end +end \ No newline at end of file