Sha256: 14f964e3b978d9840fa99bfa859d9dc1b307debdd75d0b215eb11f9a74a46a47
Contents?: true
Size: 1.85 KB
Versions: 1
Compression:
Stored size: 1.85 KB
Contents
require 'rubygems' require 'sequel' require 'fileutils' # NOTE: This converter requires Sequel and the MySQL gems. # The MySQL gem can be difficult to install on OS X. Once you have MySQL # installed, running the following commands should work: # $ sudo gem install sequel # $ sudo gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config module Jekyll module WordPress # Reads a MySQL database via Sequel and creates a post file for each # post in "table" that has post_status = 'publish'. # This restriction is made because 'draft' posts are not guaranteed to # have valid dates. def self.process(dbname, user, pass, host = 'localhost', table = "wp_posts") db = Sequel.mysql(dbname, :user => user, :password => pass, :host => host) FileUtils.mkdir_p "_posts" sql = "SELECT * FROM #{table} WHERE post_status = 'publish' and post_type = 'post'" db[QUERY].each do |post| # Get required fields and construct Jekyll compatible name title = post[:post_title] #sanitize slug = post[:post_name].gsub(/\//,'_') date = post[:post_date] content = post[:post_content] name = "%02d-%02d-%02d-%s.html" % [date.year, date.month, date.day, slug] # Get the relevant fields as a hash, delete empty fields and convert # to YAML for the header data = { 'layout' => 'post', 'title' => title.to_s, 'excerpt' => post[:post_excerpt].to_s, 'wordpress_id' => post[:ID], 'wordpress_url' => post[:guid] }.delete_if { |k,v| v.nil? || v == ''}.to_yaml # Write out the data and content to file File.open("_posts/#{name}", "w") do |f| f.puts data f.puts "---" f.puts content end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
elq-jekyll-0.4.2 | lib/jekyll/converters/wordpress.rb |